一、取数游戏
双人游戏,N(2<=N<=100)个正整数序列放在一个桌子上,两人轮流从序列的两端的任意一端取数。
Alice 和Bob 轮流取数,Alice先取,两人都足够聪明,问最后两人的最高的得分是多少?
思路:s[M][M]保存先手先拿和后拿能取得的最优值;
如果先拿,可以取这个数,而且是拿左边、拿右边两者中最优的一个。
如果后拿,对方回拿左边和拿右边两者中最优的一个,那么自然留下来的就最少!
#define M 105
int a[M],n;
int s[M][M];
int dfs(int l,int r,int who)
{
if(s[l][r])return s[l]