#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 人评分
c primer plus 第十二章 12.1小节浏览:377 |
回文数(一) (C语言代码)浏览:728 |
成绩转换 (C语言代码)浏览:1005 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:563 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:464 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:1415 |
A+B for Input-Output Practice (III) (C语言代码)浏览:564 |
矩阵乘方 (C语言代码)浏览:1022 |
整除的尾数 (C语言代码)浏览:809 |