"""
給乙個長度為n的整數陣列,將這個陣列分成m段,每一段的和為這一段的權重,所有段的權重的最大值為這次分割的權重,求所有分割中最小的權重
輸入描述:
第一行是兩個整數,表示n, m (m<=n)
第二行數n個空格分割的整數
輸出: 輸出所有分割中最小的權重
樣例: input:
5 31 4 2 3 5
output:
5"""import sys
deffind_min
(data)
: min_data, min_idx = data[0]
,0for idx, data_temp in
enumerate
(data)
:if data_tempmin_data = data_temp
min_idx = idx
return min_data, min_idx
defmerge_once
(data, sum_data)
: min_data, min_idx = find_min(sum_data)
data = data[
:min_idx]
+[min_data]
+data[min_idx+2:
] sum_data[min_idx-1]
= data[min_idx-1]
+data[min_idx]
ifnot min_idx==
len(sum_data)-1
: sum_data[min_idx+1]
= data[min_idx]
+data[min_idx+1]
sum_data = sum_data[
:min_idx]
+sum_data[min_idx+1:
]return data, sum_data
defget_weight
(data, m)
:if m<2:
return
sum(data)
sum_data =
[data[idx]
+data[idx+1]
for idx in
range
(len
(data)-1
)]while
len(data)
>m:
data, sum_data = merge_once(data, sum_data)
return
max(data)
if __name__==
"__main__"
: line1 = sys.stdin.readline(
).strip(
) line2 = sys.stdin.readline(
).strip(
) n,m = line1.split(
" ")
n,m =
int(n)
,int
(m) data =
list
(map
(int
, line2.split())
)print
(get_weight(data, m)
)
筆試程式設計題彙總 2
描述 給乙個整數陣列num,和乙個鎮整數k,能否把陣列num切成k個子集,且各個子集的和相等,返回布林型別 輸入輸出 輸入 乙個整數陣列num和乙個正整數k 輸出 返回true或者false,bool型別 樣例 輸入 4,3,2,3,5,2,1 4 輸出 true 解釋 可以分解為4個子集,他們的和...
筆試程式設計題彙總 9
0代表黑棋,1代表白棋,找出被白棋包圍的黑棋並吃掉,返回吃掉之後的結果 import sys from copy import deepcopy 4 1101 1011 1001 1111 6101001 110100 111011 010101 111111 010100 41111 0101 1...
筆試 程式設計題
1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...