解题思路: 状态转移方程:
注意事项: 背包问题
参考代码:
#include<iostream> using namespace std; #include<string.h> int main(){ int dp[26][3000]; int val[26],w[26]; int d,money,i,j; cin>>money>>d; for(i=1;i<=d;i++) cin>>val[i]>>w[i]; memset(dp,0,sizeof(dp)); //初始化 for(i=0;i<=d;i++){ for(j=0;j<=money;j++){ if(j<val[i]) dp[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-val[i]]+val[i]*w[i]); } } cout<<dp[d][money]; return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:642 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:596 |
简单的a+b (C语言代码)浏览:599 |
三角形 (C++代码)记忆化搜索浏览:1234 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:607 |
1024题解浏览:808 |
有关字符,字符串的输入输出函数说明浏览:479 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:682 |
Tom数 (C语言代码)浏览:555 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:401 |