解题思路: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语言训练-求PI* (C语言代码)(正确结果竟然是谜一样的3.141591)浏览:1301 |
点我有惊喜!你懂得!浏览:1234 |
字符串输入输出函数 (Java代码)浏览:1437 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:450 |
【回文数(二)】 (C语言代码)浏览:728 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:889 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:567 |
printf基础练习2 (C语言代码)浏览:746 |
关于C语言变量位置的问题浏览:272 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:466 |