File tree 1 file changed +39
-0
lines changed
1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < string.h>
3
+ using namespace std ;
4
+ #define inf 999999
5
+ #define max (a,b ) a > b ? a : b
6
+ int n ;
7
+ int dp[105 ][105 ];
8
+ int a[105 ],sum[105 ];
9
+
10
+ int get_sum (int i , int j){
11
+ return sum[j]-sum[i-1 ];
12
+ }
13
+ int solve (int l, int r)
14
+ {
15
+ if (l > r) return 0 ;
16
+ if (l == r) return a[l];
17
+ int &ret = dp[l][r];
18
+ if (ret != -1 ) return ret;
19
+ ret = -inf ;
20
+ for (int i = l; i <= r; i++)
21
+ {
22
+ ret = max (ret, get_sum (l,i) - solve (i+1 , r));
23
+ ret = max (ret, get_sum (i,r) - solve (l, i-1 ));
24
+ }
25
+ return ret;
26
+ }
27
+ int main ()
28
+ {
29
+ while (cin >> n && n){
30
+ memset (sum,0 ,sizeof sum);
31
+ for (int i = 1 ; i <= n ; i++ ) {
32
+ cin >> a[i];
33
+ sum[ i ] = sum[ i-1 ] + a[i] ;
34
+ }
35
+ memset (dp,-1 ,sizeof dp);
36
+ int ret = solve (1 ,n);
37
+ cout << ret << endl;
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments