您的位置:首页 > 其它

取数游戏:

2016-08-09 15:02 155 查看
有如下一个双人游戏:2*N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,A、B两人轮流从序列的两端取数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜(得分相同时A胜,A先取).试求:

1.使得A方必胜的取数策略;

2.如何取数,才能使得A方与B方所得的数字总和之差最大?(提示:A、B双方都在想方设法取胜)

输入样例:

4 7 2 9 5 2

输出样例:

A:18

B:11

1.必胜策略:

对于2n个数,S奇表示奇数位置上的数之和, S偶表示偶数位置上的数之和,则:

S奇>=S偶,S偶>=S奇必有一个成立.

假设S奇>=S偶,A取奇数位置上的数字,则B只能取偶数位置上的数字,直至取完所有的数字.

2.定义f[i,j]表示从第i到第j个数中先取数的人能获得的最大得分,则:

先取第i个,f[i,j]=Ai+Si+1···j-f[i+1,j]=Si···j-f[i+1,j];

先取第j个,f[i,j]=Aj+Si···j-1-f[i,j-1]=Si···j-f[i,j-1];

f[i,j]=max{Si···j-f[i+1,j],Si···j-f[i,j-1]},(1<=i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: