HDU 1564 Play a game(巴什博弈)脑洞
两个人玩游戏,在一个N*N的矩阵里面。一开始给出矩阵的大小。然后两个人轮流玩游戏,问谁可以赢。
游戏规则是,玩家从左下角出发。每次走一格。只能在前一个玩家的基础上,走原有格子的上面或者下面。
走最后一个格子的人赢(也就是说第一个不能走格子的人输)
别人归类为巴什博弈。给出矩阵大小,我们就可以知道矩阵中有多少个小方块。
当N是奇数的时候,有奇数个格子。
当N是偶数的时候,有偶数个格子。
偶数个格子的时候,可以分为若干个1*2格子,那么就有一种策略,每次走未走过且对应的格子。这样必然可以走偶数步。除去起点,那就是奇数步数。那么先手就可以赢。
反之后手赢。
游戏规则是,玩家从左下角出发。每次走一格。只能在前一个玩家的基础上,走原有格子的上面或者下面。
走最后一个格子的人赢(也就是说第一个不能走格子的人输)
别人归类为巴什博弈。给出矩阵大小,我们就可以知道矩阵中有多少个小方块。
当N是奇数的时候,有奇数个格子。
当N是偶数的时候,有偶数个格子。
偶数个格子的时候,可以分为若干个1*2格子,那么就有一种策略,每次走未走过且对应的格子。这样必然可以走偶数步。除去起点,那就是奇数步数。那么先手就可以赢。
反之后手赢。
这样代码就横简单了,判断下奇偶就可以
具体看一下下面的图片
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n),n)
{
if(n%2)
printf("ailyanlu\n");
else
printf("8600\n");
}
return 0;
}