Treasure Chest

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

const int N=5005;
int n;
int coins[N],dp[N],sum[N];

int max(int a,int b){ return a>b?a:b;}
int RangeSum(int i,int j) { return sum[j]-sum[i-1];}	//from i to j;

int main ()
{
	scanf("%d",&n);
	for(int i=0;i<=n;i++)
		dp[i]=sum[i]=0;
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&coins[i]);
		dp[i]=coins[i];
		sum[i]=sum[i-1]+coins[i];
	}
	for(int i=1;i<=n-1;++i)
		for(int j=1;i+j<=n;++j)
		{
			dp[j]=max(RangeSum(j,j+i)-dp[j],RangeSum(j,j+i)-dp[j+1]);
		}
	printf("%d\n",dp[1]);
	return 0;
}

posted on 2011-07-14 21:32  jaxi  阅读(146)  评论(0编辑  收藏  举报