对称博弈
在博弈论,如果博弈的收益只依赖于选手所选择的策略而不依赖于进行博弈的选手,这类博弈称为对称博弈。
小游戏、
游戏是这样的:
两个玩家用一圈n个硬币开始游戏。
他们依次从圈子中拿走硬币,每次他们可以拿1〜K连续硬币。
(想象一下,十个硬币编号从1到10,K等于3,因为1和10是连续的,你可以拿走连续的10,1,2,但是如果2被拿走,你不能拿1,3 ,4,因为1和3不连续)
拿最后一枚硬币的玩家赢得比赛。
假设这两名球员总是采取最好的举措,从不犯错误。
你的工作是找出谁肯定会赢得比赛,先手者还是后手者。
取胜策略
1. n<=k,肯定是先手的赢
2. K==1时,就看n的奇偶了,如果为奇,先手总是可以创造对称棋局而取胜,反之后手的赢。
3.k!=1时,后手的总是能创造对称的局面而取走最后的棋子。
C程序实现
if ( k == 1 && n % 2 || n <= k )
printf("先手者");
else
printf("后手者");
閱讀更多 NeozzY 的文章