解题思路:
01背包,dp,滚动数组
注意事项:
dp数组里存放的是当前背包中的物品的总体积而不是价值
参考代码:
#include <stdio.h> #include <iostream> #define N 20000 using namespace std; int v[N+2]; int dp[N+2]; int main() { int n,V; cin >> V >> n; for(int i = 1;i <= n;i++) cin >> v[i]; for(int i = 1;i <= n;i++) for(int j = V;j >= v[i];j--) dp[j] = (dp[j-v[i]] + v[i]) > dp[j] ? (dp[j-v[i]] + v[i]) : dp[j]; cout << V - dp[V] << endl; return 0; }
0.0分
1 人评分
A+B for Input-Output Practice (IV) (C语言代码)浏览:509 |
C语言程序设计教程(第三版)课后习题7.2 (Java代码)浏览:681 |
C语言训练-素数问题 (C语言代码)浏览:1654 |
不容易系列2 (C语言代码)浏览:589 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:512 |
简单的for循环浏览:1408 |
简单的a+b (C语言代码)浏览:523 |
【计算两点间的距离】 (C语言代码)浏览:1473 |
1071题解浏览:484 |