求调
查看原帖
求调
1033135
chikouxiguazi楼主2025/7/22 16:37
#include<bits/stdc++.h>
using namespace std;
long long n,k,a[60],ans,minn=INT_MAX,sum;
int main()
{
	//freopen("t4.in","r",stdin);
	//freopen("t4.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		sum+=a[i];
	}
	bool dp[60][sum+10];
	dp[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=sum;j++)
		{
			dp[i][j]=dp[i-1][j];				
			if(j>=a[i-1])
			{
				dp[i][j]=(dp[i][j] || dp[i-1][j-a[i-1]]);
			}
		}
	}
	for(int j=0;j<=sum;j++)
	{
		if(dp[n][j])
		{
			int t=abs(j-k);
			if(t<minn || (t==minn && j<ans))
			{
				minn=t;
				ans=j;
			}
		}
	}
	cout<<ans;
	return 0;
}
2025/7/22 16:37
加载中...