我有兩個列表:如何添加相同的元素N次?
list1 = [1,2,6]
list2 = []
,我有一個數:N
我如何可以追加列表1到列表2的號碼,這樣的列表2的總和等於N.
例:
n = 10
list2 = [2,2,6]
我無法找到一個方法來添加2直到總和等於10
我有兩個列表:如何添加相同的元素N次?
list1 = [1,2,6]
list2 = []
,我有一個數:N
我如何可以追加列表1到列表2的號碼,這樣的列表2的總和等於N.
例:
n = 10
list2 = [2,2,6]
我無法找到一個方法來添加2直到總和等於10
這可能會實現:
list1 = [1,2,6]
list2 = []
n = 10
list1 = sorted(list1, reverse=True) # sort list descending order
for i in list1: # for each item in list1
list2.append(i) # add the item to list2
while not sum(list2) > n: # while sum of list2 is less than n
list2.append(i) # keep adding the same element
if sum(list2) > n: # if sum of list2 is more than n
list2.pop() # remove the last element added
list2.sort() # sort list ascending order
print(list2) # [2, 2, 6]
工程爲給定的list1
。
可能需要測試不同長度和數量的list1
。
哇,真是太棒了,它正在工作。我曾試圖做類似的事情,但相反「而不是sum(list2)> n:」,我試着「while sum(list2)<= n:」,但由於某種原因它不工作:( 真的很感謝人 – taynan
是啊,你可以做同樣的「while sum(list2)<= n:」並改變一些其他的東西,很高興提供幫助,如果你覺得這回答了你的問題,請考慮upvoting或接受它,謝謝 – davedwards
reverse這份名單確實是一個好主意OO – taynan
聽起來像是一個動態編程問題 –
當你無法達到N的值時會發生什麼? –
[子集和算法在集合中重複數字]的可能副本(https://stackoverflow.com/questions/11929938/subset-sum-algorithm-with-repetition-of-numbers-in-the-set) –