救助!
查看原帖
救助!
231965
Yellow_Lemon_Tree楼主2020/6/20 10:29

为什么我输出永远是0!!

#include<bits/stdc++.h>
using namespace std;
int n,m=0,a[105],f[105][3],ans=0;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
    	m+=a[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=m/2;j>=a[i];j--)
		{
			if(f[j-a[i]][1]+a[i]>=f[j][1])
			{
				if(f[j-a[i]][2]+1<=n/2)
				{
					f[j][1]=f[j-a[i]][1]+a[i];
					f[j][1]=f[j-a[i]][2]+1;
				}
			}
		}
	}
	for(int i=1;i<=m/2;i++)
	{
		if(f[i][2]==n/2) ans=max(ans,f[i][1]);
	}
	cout<<ans<<endl;
return 0;
}

2020/6/20 10:29
加载中...