一开始以为只抽一个数,后来发现原来是从一端抽取一列数
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int num[104][104];
int sum[104];
/*
int dfs(int s, int e) {
if(num[s][e]) return num[s][e];
if(s > e) return num[s][e] = 0;
int ss = sum[e] - sum[s-1];
num[s][e] = ss - min(dfs(s, e-1), dfs(s+1, e));
return num[s][e];
}
*/
int dfs(int s, int e) {
if(num[s][e]) return num[s][e];
if(s > e) return num[s][e] = 0;
int ans = 0;
for(int i = s+1; i <= e; i++) {
ans = min(dfs(i, e), ans);
}
for(int i = s; i < e; i++) {
ans = min(dfs(s, i), ans);
}
num[s][e] = sum[e] - sum[s-1] - ans;
return num[s][e];
}
int main() {
int t;
while(scanf("%d", &t), t != 0) {
int n;
sum[0] = 0;
memset(num, 0, sizeof(num));
for(int i = 1; i <= t; i++) {
scanf("%d", &n);
sum[i] = sum[i-1] + n;
}
printf("%d\n",2*dfs(1, t) - sum[t]);
}
return 0;
}