| 题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
|---|---|---|---|---|---|
| 装箱问题 | ★☆☆☆☆ | 答案正确 | 100 | 2014/11/04 19:48:55 | 算法错误(0) |
经典问题,又称0-1背包问题。
最经典的DP了没什么好说的。第一次一手滑居然交成完全背包。
| 1014.cpp代码已折叠
展开折叠内容
|
|---|
#include<cstdio>
#include<algorithm>
int v,n,vi[50],Ans;
bool u[30000]={1};
int main()
{
scanf("%d%d",&v,&n);
for(int i=1;i<=n;++i)
scanf("%d",&vi[i]);
for(int i=1;i<=n;++i)
for(int j=v;j>=vi[i];--j)
{
if(u[j-vi[i]]&&!u[j])
{
u[j]=1;
Ans=std::max(Ans,j);
}
}
printf("%d",v-Ans);
return 0;
}
|