解题思路:动态规划 + 循环
注意事项:进一步对递归进行优化
参考代码:
#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语言程序设计教程(第三版)课后习题8.1 (C++代码)浏览:756 |
C语言程序设计教程(第三版)课后习题6.2 (C++代码)为什么回车不算字符浏览:1185 |
【计算球体积】 (C语言代码)浏览:984 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:323 |
输出九九乘法表 (C语言代码)浏览:555 |
2^k进制数 (C++代码)使用递归方法浏览:721 |
C语言考试练习题_排列 (C语言代码)浏览:1315 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
【绝对值排序】 (C++代码)浏览:670 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:738 |