hdu 2147 kiki's game

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
 

Recommend
威士忌
 

这道题是一道组合博弈题,我是按照逻辑推理的方式想的。
首先只有一个1*1的时候肯定是输了,我们这里以p 代表必输点,n代表必赢点
图像如下

P

现在考虑2*2的现象
图像如下

NN
PN

这是很容易证明这些是必胜的点
接下来可以考虑3*3
图像如下(证明简单,可以自己证明)

PNP
NNN
PNP

接下我只是看出点规律,然后查了一下网上的博弈方法,有如下三条结论
(1) 所有终结点是必败点(P点);
 (2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点);
(3)无论如何操作, 从必败点(P点)都只能进入必胜点(N点).

也就是说一个P周围全是N,按此方法可以推出任意结果,那就是P节点只存在于双边都是偶数的情况
#include<stdio.h>
int main()
{
  int n,m;
  while(scanf("%d%d",&n,&m)!=EOF&&n!=0&&m!=0)
  {
     if(m&1&&n&1)
          printf("What a pity!\n");
     else
          printf("Wonderful!\n");
  }
  return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值