巴什博奕 hdu oj 2147 kiki's game

 hdu oj 2147kiki's game

kiki's game

Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 40000/10000K (Java/Other)
Total Submission(s) : 8   Accepted Submission(s) : 2
Problem Description
Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the chesserboard is n*m.First of all, a coin is placed in the top right corner(1,m). Each time one people can move the coin into the left, the underneath or the left-underneath blank space.The person who can't make a move will lose the game. kiki plays it with ZZ.The game always starts with kiki. If both play perfectly, who will win the game?
 

Input
Input contains multiple test cases. Each line contains two integer n, m (0<n,m<=2000). the="" input="" is="" terminated="" when="" n="0" and="" m="0." <="" div="">
 

Output
If kiki wins the game printf "Wonderful!", else "What a pity!".
 

Sample Input
    
    
    
    
5 3 5 4 6 6 0 0
 

Sample Output
    
    
    
    
What a pity! Wonderful! Wonderful!
 

Author
月野兔
 

Source
HDU 2007-11 Programming Contest

题意:

  • 巴什博奕教程点此
  • 在一个m*n的棋盘内,棋子(二人共用一颗棋子)从棋盘的右上角出发,可以向左移,下移,左下移,但每次只能移动一格,先到棋盘左下角着获胜。kiki每次先走。

思路:

先做出PN图如下

巴什博奕 hdu oj 2147 kiki's game_第1张图片

其中P代表必胜点,N代表必败点。

那么这张图是怎么来的呢?

采用逆向思维,从左下方开始,填写该表,由题意得:

N:必胜点(如果左边,左下角,下角有一个P点,那么这个点就是N点)

P:必败点(如果左边,左下角,下角全都是N点,那么这个点就是P点)

结论:

通过PN图我们发现当m,n至少有一个是偶数,则kiki必胜。

c语言代码:

#include<stdio.h>

int main()
{
	int n,m;
	while(scanf("%d%d",&n,&m),n+m)
    	{
		if(n%2==0||m%2==0) printf("Wonderful!\n");
    		else printf("What a pity!\n");
    	}
return 0;
}

你可能感兴趣的:(数据结构与算法,HDU,博弈)