1. 程式人生 > >百詞斬2019校招題-NYOJ 1058 尋找和為定值的若干個數

百詞斬2019校招題-NYOJ 1058 尋找和為定值的若干個數

百詞斬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))