#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int f[20001]; int main(void){ int V,n; cin>>V>>n; for(int i=1;i<=n;i++){ int w; cin>>w; for(int v=V;v>=w;v--) f[v]=max(f[v],f[v-w]+w); } cout<<V-f[V]; return 0; }
解题思路:
直接一个滚动数组,使用一个01背包就可以解决。
注意事项:
参考代码:
0.0分
2 人评分
DNA (C语言代码)浏览:727 |
C二级辅导-统计字符 (C语言描述——用函数求解)浏览:1154 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:477 |
C语言程序设计教程(第三版)课后习题7.4 (C++代码)浏览:545 |
纪念品分组 (C++代码)浏览:826 |
C语言训练-自守数问题 (C语言代码)浏览:633 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:548 |
计算质因子 (Java代码)浏览:713 |
1224题解浏览:471 |
这是我的第一篇文章浏览:256 |