求助,最后一个过不去,只有90分
#include<iostream>
using namespace std;
#include<algorithm>
int dat[62];
int dfs(int a, int b, int k) {
if (a > b) {
return 0;
}
int minl = 24;
for (int i = a;i <= b;i++) {
int x = k - dat[i];
int sum = dat[i] + dfs(i + 1, b, x);
int f = abs(sum - k);
minl = min(f, minl);
}
return minl + k;
}
int ans[4];
int main() {
for (int i = 0;i < 4;i++) {
cin >> ans[i];
}
int sum0 = 0;
for (int i = 0;i < 4;i++) {
int sum = 0;
for (int j = 1;j <= ans[i];j++) {
cin >> dat[j];
sum += dat[j];
}
int y = dfs(1, ans[i], sum / 2);
sum0 += max(sum - y, y);
for (int j = 1;j <= ans[i];j++) {
dat[j] = 0;
}
}
cout << sum0;
return 0;
}