HDU 2147 kiki's game(博弈图上找规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2147

题目大意:给你一个n*m的棋盘,初始位置为(1,m),两人轮流操作,每次只能向下,左,左下这三个方向移动,谁最后无法移动棋子就输掉比赛,问先手是否会获胜。

解题思路:简单题,P/N分析找规律,以(n,m)点为结束点推到起始点,如图:

发现每个田字格的状态都是一样的,因为(n,m)点一定时P态,所以可以得出规律:只有当(m%2==1&&n%2==1)时,先手才会输。

代码:

 1 #include<cstdio>
 2 
 3 int main(){
 4     int n,m;
 5     while(~scanf("%d%d",&m,&n)&&(m||n)){
 6         if(m%2==1&&n%2==1)
 7             puts("What a pity!");
 8         else
 9             puts("Wonderful!");
10     }
11 }
原文地址:https://www.cnblogs.com/fu3638/p/7476275.html