我想實現一個算法,該算法將告訴您所需的總和是否可以從給定的數組元素中生成。用於查找子數組元素的總和是否可以生成所需總和的算法
我已經用此程序
def check_payment(arr, requested_money):
arr.sort()
arr.reverse()
sum = 0
for item in arr:
sum += item
if sum == requested_money:
return True
elif sum > requested_money:
sum -= item
return False
我不知道它在哪裏得到錯誤的走了過來。一些測試案例失敗。你能否給我提供一個場景,哪裏會失敗。
*我不知道它在哪裏出錯* - 實際上到處都是。只有在檢查的最後一個元素溢出時纔會回溯,但不關心以前的元素。這種類型的問題自然是用遞歸解決的。 –
可能的方法:http://www.geeksforgeeks.org/write-ac-program-that-given-a-set-a-of-n-numbers-and-another-number-x-determines-whether-or-並非存在 - 兩個元素在S - 誰的總和是 - 完全-X/ 存檔:https://web.archive.org/web/20151221002246/http://www.geeksforgeeks。組織/寫-AC-程序 - 即賦予-A-設置-A-的正號和 - 另一數-X-確定-是否有或未存在-存在二個元素,IN- s-which-sum-is-exactly-x/ –
據我瞭解你的問題定義,這是一個稱爲https://en.wikipedia.org/wiki/Subset_sum_problem的NP-Complete問題。所以,如果你的數據集很大,這個問題就不存在多項式時間(即短時間)算法。你的數據的大小是多少? – msalperen