求帮忙
查看原帖
求帮忙
743494
FRANXX_楼主2022/11/14 21:55
#include<bits/stdc++.h>
using namespace std;
int n,s[10],sum,timen[25],dp[30][2000],ans,num;
int main()
{
	for(int i=1;i<=4;++i)
		scanf("%d",&s[i]);
	for(int i=1;i<=4;++i)
	{
		sum=0;
		for(int j=1;j<=s[i];++j)
		{
			scanf("%d",&timen[j]);
			sum+=timen[j];
		}		
		sort(timen,timen+s[i]);
		for(int j=1;j<=s[i];++j)
		{
			for(int k=0;k<=sum/2;++k)
			{
				if(k>=timen[j])
				{
					dp[j][k]=max(dp[j-1][k],dp[j-1][k-timen[j]]+timen[j]);
				}
				num=max(dp[j][k],num);
			}
		}
		ans+=max(num,sum-num);
	}
	cout<<ans;
	return 0; 
}

用的是动规,输出完全不对,不知道哪里错了

2022/11/14 21:55
加载中...