"""
有N個商品,已知他們的價格,試判斷他們中的組合是否可以正好組合出價值爲M的禮包
輸入描述:
第一行:N
第二行:N個空格分割的整數,表示價格
第三行:M
輸出描述:
如果可以組合,輸出1, 否則輸出0
樣例:
input:
6
99 199 1999 10000 39 1499
10238
output:
1
"""
import sys
def check_with_mask(price_N, price, mask):
if price == 0:
return True, mask, price
for idx, data in enumerate(price_N):
if not mask[idx]:
continue
if data<=price:
rtn, mask_rtn, price_rtn = check_with_mask(price_N, price-data, mask[:idx]+[False]+mask[idx+1:])
if rtn:
price = price_rtn
mask = mask_rtn
return True, mask, price
else:
continue
return False, mask, price
def check_price(price_N, price):
mask = [True]*len(price_N)
rtn, mask, price = check_with_mask(price_N, price, mask)
return (1 if rtn else 0)
if __name__=="__main__":
line1 = sys.stdin.readline().strip()
line2 = sys.stdin.readline().strip()
line3 = sys.stdin.readline().strip()
N = list(map(int, line1.split()))[0]
price_N = list(map(int, line2.split()))
price = list(map(int, line3.split()))[0]
print(check_price(price_N, price))
筆試編程題彙總(7)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.