题目:
给n个商品的价格,然后给出优惠券满减的价格,求问可使用这张优惠券最低价格是多少。
商品总价超过优惠券价格的三倍,或者低于优惠券,返回 -1。
输入:(优惠券值m、商品个数n、n个商品的价格)
1000 4 555 500 450 460
输出:
1055
import sys
line = sys.stdin.readline().strip()
list_ = list(map(int, line.split()))
m, n = list_[0], list_[1]
nums = list_[2:]
sum_ = sum(nums)
dp = [0 for i in range(sum_ + 1)]
if(sum_ < m):
print(-1)
elif(sum_ == m):
print(m)
else:
dp[0] = 1
for i in range(n):
for j in range(sum_, nums[i] - 1, -1):
dp[j] |= dp[j - nums[i]] '''有1出1,全0出0, 比if判断要快速'''
for i in range(m + 1, sum_ + 1):
if(i // m >= 3):
print(-1)
break
if(dp[i] == 1):
print(i)
break