解题思路:简单的背包问题
注意事项:
参考代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,m,i,j,a[40],dp[20005];
cin>>n;
for(i=0;i<=n;i++)
dp[i]=n;
cin>>m;
for(i=0;i<m;i++)
cin>>a[i];
for(i=0;i<m;i++)
for(j=n;j>=a[i]&&dp[j-a[i]]>=a[i];j--)
dp[j]=min(dp[j-a[i]]-a[i],dp[j]);
cout<<*min_element(dp,dp+n+1);
return 0;
}
0.0分
1 人评分
C二级辅导-等差数列 (C++代码)浏览:2207 |
C语言训练-大、小写问题 (C语言代码)浏览:2349 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:643 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:603 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:681 |
sizeof的大作用 (C语言代码)浏览:1447 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:661 |
淘淘的名单 (C语言代码)浏览:1221 |
排序算法(选择,插入,冒泡)浏览:774 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:662 |