有点不一样但不知道哪错了
查看原帖
有点不一样但不知道哪错了
466348
polari楼主2023/7/21 13:02

看了几个题解用f[i]表示容量i能装的最大重量

我的bool f[i]只用来判断取完后能不能剩下i这个值

然后判断i的最小值

这题这样就够了

结果第三个点wrong了

可能是很蠢的错误或我背包根本没懂

请大佬帮忙指出

#include<bits/stdc++.h>
using namespace std;
int v,n,a[61],b[20001],ma=0;
int main()
{
	cin>>v>>n;
    
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	b[v]=1;//初始值可以取并从它开始
   
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		ma+=a[i];
	}
    
	if(ma<v)
	{
		cout<<v-ma;
		return 0;
	}/*这里是为了过自己加的(我当时以为我发现问题了又一想按理来说不需要这样,应该哪里错了*/
    
	for(int i=1;i<=n;i++)
		for(int j=a[i];j<=v;j++)
			if(b[j])b[j-a[i]]=1;
	for(int i=0;i<=n;i++)
		if(b[i])
		{
			cout<<i;
			return 0;
		}
}
/*w的那组数据
in
90
12
3
7
4
5
13
2
8
4
7
6
5
7
 
out
19*/
2023/7/21 13:02
加载中...