解题思路: 状态转移方程:
注意事项: 背包问题
参考代码:
#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语言代码)浏览:1330 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:724 |
Pascal三角 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1015 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:512 |
WU-输出正反三角形 (C++代码)浏览:1098 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |
勾股数 (C语言代码)浏览:830 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:476 |