输入的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。 接下来的M行每行包括两个在1到100之间(包括1和100)的的整数,分别表示采摘某株草药的时间和这株草药的价值。
可能有多组测试数据,对于每组数据, 输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
70 3 71 100 69 1 1 2
3
while True:
try:
t,m=map(int,input().strip().split())
inp=[]
for i in range(m):
inp.append(list(map(int,input().strip().split(' '))))
dp=[]
for i in range(t+1):
dp.append([0]*(m+1))
for i in range(t+1):
for j in range(1,m+1):
if inp[j-1][0]<=i:
dp[i][j]=max(dp[i][j-1],dp[i-inp[j-1][0]][j-1]+inp[j-1][1])
else:
dp[i][j]=dp[i][j-1]
#print(dp)
print(dp[-1][-1])
except:
break 动态规划
while True:
try:
t,m = list(map(int,input().split()))
selects = []
for i in range(m):
selects.append(list(map(int,input().split())))
values = [0] * (t+1)
for i in range(m):
if selects[i][0] <= t:
for j in range(t,selects[i][0]-1,-1):
values[j] = max(values[j],values[j-selects[i][0]]+selects[i][1])
print(values[t])
except Exception:
break