求助大佬
87分,最后一个点T掉怎么调(下附代码)
#include <bits/stdc++.h>
using namespace std;
int n, a[65], sum, hh, len;
bool f[65];
bool cmp(int x, int y){
return x > y;
}
bool DFS(int cnt, int id, int num){
if(cnt > hh){
printf("%d", len);
exit(0);
}
if(num == len) return DFS(cnt + 1, 1, 0);
int fl = 0;
for(int i = id; i <= n; i++){
if(f[i]) continue;
if(num + a[i] <= len && a[i] != fl){
f[i] = true;
if(DFS(cnt, i + 1, num + a[i])) return true;
fl = a[i];
f[i] = false;
if(num == 0 || num + a[i] == len) return false;
}
}
return false;
}
int main(){
int Max=0;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
sum += a[i];
Max = max(Max, a[i]);
}
stable_sort(a + 1, a + 1 + n, cmp);
for( len = Max; len <= sum; len++){
if(sum % len == 0){
hh = sum / len;
if(DFS(1, 1, 0)){
break;
}
}
}
return 0;
}