解题思路:01背包问题,利用动态规划思想,创建三个一维数组w[i],v[i],dp[i],分别用来存总价值=重要度*价格,价格,最大价值。
注意事项:
参考代码:
n,m=map(int,input().split())
w=[]
v=[]
dp=[0]*(n+1)
for i in range(m):
a,b=map(int,input().split())
w.append(a*b)
v.append(a)
for i in range(m):
for j in range(n,v[i]-1,-1):
dp[j]=max(dp[j],dp[j-v[i]]+w[i])
print(max(dp))
0.0分
2 人评分
C语言考试练习题_一元二次方程 (C语言代码)浏览:708 |
C二级辅导-分段函数 (C语言代码)浏览:912 |
C二级辅导-求偶数和 (C语言代码)浏览:659 |
点我有惊喜!你懂得!浏览:4111 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1091 |
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:799 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:737 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:387 |
一元一次方程 (C语言代码)浏览:4245 |