根本找不到问题(qwq)
哪位大佬能帮我调一下
#include<bits/stdc++.h>
using namespace std;
const int N=66;
int n,a[N];
int len,cnt;
bool used[N],flag;
void dfs(int j,int l,int last)
{
if(j>cnt)
{
if(l==0)flag=true;
return ;
}
if(flag)return;
if(l==len)dfs(j+1,0,1);
int fail=0;
for(int i=last;i<=n;i++)
if(used[i]==false&&l+a[i]<=len&&a[i]!=fail)
{
used[i]=true;
dfs(j,l+a[i],i+1);
used[i]=false;
if(flag==false)
{
fail=a[i];
if(l==0||a[i]+l==len)return;
}
else return;
}
}
int main()
{
cin>>n;
int big=0,sum=0;
for(int i=1;i<=n;i++)cin>>a[i],big=max(a[i],big),sum+=a[i];
sort(a+1,a+n+1);
reverse(a+1,a+n+1);
for(len=big;len<=sum;len++)
{
if(sum%len==0)
{
cnt=sum/len;
dfs(1,0,1);
if(flag)
{
cout<<len;
break;
}
}
}
return 0;
}