解题思路:动态规划 + 循环
注意事项:进一步对递归进行优化
参考代码:
#include <iostream> using namespace std; int t, m; int arr[101], v[101]; int dp[101][1001]; int main() { cin >> t >> m; for (int i = 0; i < m; ++i) { cin >> arr[i] >> v[i]; } for (int i = m - 1; i >= 0; --i) { for (int j = 0; j <= t; ++j) { if (j < arr[i])dp[i][j] = dp[i + 1][j]; else dp[i][j] = max(dp[i + 1][j], dp[i + 1][j - arr[i]] + v[i]); } } cout << dp[0][t] << endl; return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:333 |
点我有惊喜!你懂得!浏览:4145 |
C语言程序设计教程(第三版)课后习题5.7 (C++代码)浏览:879 |
分糖果 (C++代码)浏览:1537 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:566 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5275 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:761 |
母牛的故事 (C语言代码)浏览:1451 |
最小公倍数 (C语言代码)浏览:1106 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1483 |