RT,最后一个点超了3ms(悲) 记录
#include <bits/stdc++.h>
using namespace std;
int n,a[100],ans,sum,maxn,num;
bool v[100];
bool cmp(int x,int y){
return x>y;
}
inline bool dfs(int x,int y,int last){
int fail=0;
if(y == ans) return dfs(x+1,0,0);
if(x-1 == num) return 1;
for(int i=last;i<n;i++){
if((!v[i]) && (y+a[i]<=ans) && (a[i]!=fail)){
v[i]=1;
if(dfs(x,y+a[i],i+1)) return 1;
v[i]=0;
fail=a[i];
if(y==0 || y+a[i]==ans) return 0;
}
}
return 0;
}
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
sort(a,a+n,cmp);
maxn=a[0];
for(ans=maxn;ans<=sum;ans++){
if(sum%ans != 0) continue;
num=sum/ans;
if(dfs(1,0,0)){
cout<<ans<<endl;
return 0;
}
}
return 0;
}
求大佬看看问题出在哪QAQ