代码如下
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100];
bool vis[100];
bool dfs(int s,int dep,int l)
{
if(dep==n)return s==l;
if(s==l)l=0;
for(int i=50; i>=1; i--)
{
if((vis[i]==true)||i>s-l)continue;
else
{
vis[i]=true;
dfs(s,dep+1,l+i);
vis[i]=false;
}
}
}
signed main()
{
int sum=0,minx=1;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
sum+=a[i];
if(minx<a[i])minx=a[i];
}
for(int i=minx; i<=sum; i++)
if(sum%i==0)if(dfs(i,0,0)){cout<<i;return 0;}
}