UVa 10891

来源:互联网 发布:成都房价 知乎 编辑:程序博客网 时间:2024/06/16 01:49

一开始以为只抽一个数,后来发现原来是从一端抽取一列数

#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;}


0 0
原创粉丝点击