69求调
查看原帖
69求调
1438571
Galaxy__H3356楼主2024/11/13 19:14
#include<bits/stdc++.h>
using namespace std;
int a[66];
int b[66];
int n;
int sum;
int egg;
int ans;
int len_1;
bool flag[66]={0};
bool f=0,f_1=0;
void dfs(int cur,int len,int l){
	if(cur==egg+1){
		f=1;
		return;	
	}
	if(len==len_1) dfs(cur+1,0,0);
	f_1=0;
	for(int i=1+l;i<=n;i++){
		if(flag[i]==0&&len+a[i]<=len_1&&f_1!=a[i]){
			flag[i]=1;
			dfs(cur,len+a[i],i);
			if(f==1) return;
			flag[i]=0;
			if(len==0||len+a[i]==len_1) return;
		}
	}
}



int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		//scanf("&d",&b[i]);
		cin>>b[i];
		sum+=b[i];
	}
	sort(b+1,b+1+n);
	int j=n;
	for(int i=1;i<=n;i++){
		a[i]=b[j];
		j--;
	}
	for(int i=b[n];i<=sum;i++){
		if(sum%i==0) {
			len_1=i;
			egg=sum/i;
			dfs(1,0,0);
			if(f==1)break;
		}
	}
	printf("%d",len_1);
	return 0;
}
2024/11/13 19:14
加载中...