game----------------------------思維(巴什博弈+PN圖)

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.

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

解析:
定義兩個狀態
P:即必敗點,某玩家位於此點,只要對方無失誤,則必敗
N:即必勝點,某玩家位於此點,只要自己無失誤,則必勝

三個定理:
一·所有終結點都是必敗點P
二.所有一步能走到必敗點P的就是N點
三.通過一步操作只能到N點的就是P點

下面就是P/N圖
最左下角一定是終結點所以是P
在這裏插入圖片描述

由上圖可知n和m爲奇數時,kiki都是必輸的

#include <iostream> 
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
	int n, m;
	while(~scanf("%d %d",&n,&m)&&n&&m)
	{
		if((n&1)&&(m&1)) cout<<"What a pity!"<<endl;
		else cout<<"Wonderful!"<<endl;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章