78TLE求调
查看原帖
78TLE求调
1183822
MIAOQINGTIAN楼主2024/12/13 16:38
#include <bits/stdc++.h>
using namespace std;
int m[65];
int book[65];
int n;
int maxm=0,summ=0;
bool cmp(int x,int y)
{
    return x>y;
}
bool dfs(int now,int f,int cnt,int sum)
{
	if(sum==n&&cnt==f) return 1;
	if(cnt==f)
	{
		cnt=0;
		now=1;
	}
	for(int i=now;i<=n;i++)
	{
		if(!book[i] && cnt+m[i]<=f)
		{
			book[i]=1;
			if(dfs(i,f,cnt+m[i],sum+1))
				return 1;
			book[i]=0;
			if(cnt==0) break;
			while(m[i]==m[i+1]) i++;
		}
		
	}
	return 0;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&m[i]);
		maxm=max(maxm,m[i]);
		summ+=m[i];
	}
	sort(m+1,m+n+1,cmp);
	for(int i=maxm;i<=summ;i++)
	{
	    if(summ%i==0)
	    {
	        if(dfs(1,i,0,0))
    		{
    			cout << i;
    			return 0;
    		}
	    }
	    memset(book,0,sizeof book);
	}
	return 0;
}

2024/12/13 16:38
加载中...