圈地運動,就是用很多木棍擺在地上組成乙個面積大於0的多邊形。
小明喜歡圈地運動,於是他需要去小紅店裡面買一些木棍,期望圈出一塊地來。小紅想挑戰一下小明,所以給小明設定了一些障礙。障礙分別是:
1. 如果小明要買第i塊木棍的話,他就必須把前i-1塊木棍都買下來。
2. 買了的木棍都必須用在圈地運動中。
那麼請問小明最少買多少根木棍,才能使得木棍圍成的圖形是個面積大於0多邊形呢?
輸入描述:
第一行乙個數n,表示木棍個數。
第二行n個數,第i個數表示第i個木棍的長度ai
1<=n<=10000
1<=ai<=10000
輸出描述:
輸出乙個數,表示最少需要的木棍個數,如果無解輸出-1
輸入例子1:36 8 10
輸出例子1:
3例子說明1:
用三根6,8,10的木棍可以組成乙個直角三角形的圖形。
# 構成 n 邊形的條件是,任意 n-1 條邊之和大於第 n 條邊。
n = int(input())
ai = list(map(int, input().split()))
l = len(ai)
result = -1
for i in range(2, l):
tmp =
tmp = ai[0:i+1]
# tmp.sort()
# if sum(tmp[: len(tmp)-1]) > tmp[len(tmp)-1]: # 較小的 n-1 條邊之和大於最大的那條邊。
if sum(tmp) > 2*max(tmp): # 等價的條件是:所有邊長度之和大於最大那條邊長度的二倍。
result = i + 1
break
print(result)
1. 構成 n 邊形的條件:任意 n-1 條邊之和大於第 n 條邊;即所有邊之和大於最長的那條邊長度的二倍。
(參考:多邊形構成問題)
2017校招筆試題
題目 輸入乙個字串從左到右遍歷,如果遇到三個連續相同的子串就將這個子串刪除,並將原串剩下的部分拼接到一起,重複上述過程,直到字串中沒有可以刪除的子串。eg 輸入 aaabccdddcb aabbbabbba 輸出 bb a重要 從乙個字串中刪除乙個子串,必須將原字串的內容strcpy到開闢的數字中 ...
京東校招筆試題
題目摘自牛客網 給定字串 ascii碼0 255 陣列,請在不開闢額外空間的情況下刪除開始和結尾處的空格,並將中間的多個連續的空格合併成乙個。例如 i am a little boy.變成 i am a little boy 語言不限,但不要用偽 作答,函式輸入輸出請參考如下的函式原型 void f...
谷歌2013校招筆試題
1 單項選擇題 1.1 如果把傳輸速率定義為單位時間內傳送的資訊量 以位元組計算 多少。關於一下幾種典型的資料傳輸速率 1.使用usb2.0快閃儲存器盤,往usb快閃儲存器盤上拷貝檔案的資料傳輸速率 2.使用100m乙太網,在區域網內拷貝大檔案時網路上的資料傳輸速率 3.使用一輛卡車拉1000塊單塊...