百詞斬2019校招題-NYOJ 1058 尋找和為定值的若干個數
阿新 • • 發佈:2018-12-09
百詞斬2019校招題 NYOJ 1058 部分和問題: 尋找和為定值的若干個數 給定整數a1、a2、a3、…、an,判斷是否可以從中選出若干個數,使得它們的和等於k(k任意給定,且滿足-10^8 <= k <= 10^8)。
分析:此題相對於本節“尋找滿足條件的多個數”如出一轍,不同的是此題只要求判斷,不要求把所有可能的組合給輸出來。因為此題需要考慮到加上a[i]和不加上a[i]的情況,故可以採用深度優先搜尋的辦法,遞迴解決。
百詞斬
def sumOfkNum(sum, arr, i):
# mylist = []
if (sum <= 0 or i == len(arr) ):
return False
if (sum == arr[i]):
return True
# mylist.append(arr[i])
k1=sumOfkNum(sum - arr[i], arr, i + 1)
# mylist.pop()
k2=sumOfkNum(sum, arr, i + 1)
return k1 or k2
arr=[1,0,1,1,1,1,4]
sum=18
i=0
print(sumOfkNum(sum, arr, i))