Python “最短”挑戰(12.17)
阿新 • • 發佈:2018-12-20
Python “最短”挑戰(12.17)
Description
給定一個數k和一個有n個元素的陣列li,請你判斷,是否可以從這組數中選擇若干個數,使得其和為k。如果可以,輸出’Yes’,否則輸出’No’。
例如,當k=12,n=4,li=[3,7,1,2]時,輸出’Yes’,因為3+7+2=12。
Input
三行,第一行n,第二行k,第三行li
Output
‘Yes’或’No’
其餘要求同首題。
參考程式碼
n,k,li=int( input()),int(input()),list(map(int,input().split(' ')))
def main(i,s):return s==k if i==n else True if main(i+1,s) or main(i+1,s+li[i]) else False
print('Yes' if main(0,0) else 'No')
'''
def main(li,n,k):
li=sorted(li,reverse=True)
for i in range(n):
for j in range(i,n+1):
if sum(li[i:j])==k:
print('Yes')
return
print('No')
main(li,n,k)
'''