求大佬帮忙改一下
查看原帖
求大佬帮忙改一下
667281
chennuo_2010楼主2022/10/15 18:55
#include<bits/stdc++.h>
using namespace std;
int n,sum=0,d;
int len[66],a[66],pre[66];
void dfs(int u,int k,int p){
	if(u==0){
		dfs(d,k-1,a[n]);return;
	}
	if(k==0){
		cout<<d<<endl;exit(0);
	}
	p=(p<u)?p:u;
	while(p&&len[p]==0)--p;
	while(p){
		if(len[p]){
			--len[p];
			dfs(u-p,k,p);
			++len[p];
			if(u==p||u==d)return;
			p=pre[p];
		}else p=pre[p];
	}
}
int main(){
	cin>>n;
	for(int i=1,x;i<=n;++i){
		cin>>x;sum+=x;
		++len[a[i]=x];
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n;++i)
    if(a[i]!=a[i-1])pre[a[i]]=a[i-1];
	for(d=a[n];(d<<1)<=sum;++d)
    if(sum%d==0)dfs(d,sum/d,a[n]);
	return 0;
}
2022/10/15 18:55
加载中...