解题思路:
应该是用dp做的,然而并不会...强行DFS还是可以过的,可以承受20以内数据量的打击
注意事项:
哪个大佬来教我一下dp哈
参考代码:
#include <iostream> #define N 25 using namespace std; int importance[N + 2]; int value[N + 2]; void DFS(int curIndex, int curValue, long long curProduct, const int n, const int maxValue, long long & maxProduct) { if (curIndex >= n) { if (curProduct > maxProduct && curValue <= maxValue) { maxProduct = curProduct; } return; } else if(curValue > maxValue) { return; } else { DFS(curIndex + 1, curValue + value[curIndex], curProduct + importance[curIndex] * value[curIndex], n, maxValue, maxProduct); DFS(curIndex + 1, curValue, curProduct, n, maxValue, maxProduct); } return; } int main(int argc, char** argv) { int n = 0, m = 0; cin >> n >> m; int v = 0, p = 0; for (int i = 0; i < m; i++) { cin >> v >> p; value[i] = v; importance[i] = p; } long long ans = 0; DFS(0, 0, 0, m, n, ans); cout << ans << endl; return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:603 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:658 |
核桃的数量 (C语言代码)浏览:671 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:687 |
C二级辅导-阶乘数列 (C语言代码)浏览:520 |
模拟计算器 (C语言代码)浏览:2300 |
字符删除 (C语言代码)浏览:720 |
1250题解浏览:561 |
C语言训练-斐波纳契数列 (C语言代码)浏览:508 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:679 |