- 积分
- 2669
- 明经币
- 个
- 注册时间
- 2003-11-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|

楼主 |
发表于 2012-7-21 13:47:36
|
显示全部楼层
本帖最后由 lilq_78 于 2012-7-21 13:53 编辑
#include<iostream>
#include<cstring>
using namespace std;
int v,n;
int volume[31];//存储n件物品的体积
int h[20001];//h=1,表示n件物品通过某种组合,所构成的体积和正和等于i;
//h=0,表示n件物品无论如何组合,体积和都无法等于i
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int v,n,i,j,k;
while(cin>>v>>n)
{
for(i=1;i<=n;i++)
cin>>volume; //输入
memset(h,0,sizeof(h)); //初始化
h[0]=1;
for(i=1;i<=n;i++)
for(k=v;k>=volume;k--)
h[k]=h[k]||h[k-volume];
j=v;
while(j>0&&h[j]==0)
j--;
cout<<v-j<<endl;
}
return 0;
}
|
|