HOJ 2147 kiki‘s game(P-position, N-position 游戏入门)

P-position, N-position 游戏
本题要点:
1、画出一个 n * m 的表,观察规律。
题目说,从点 (1, m), 沿着 左,左下,正下 三个方向,直到走到矩阵的左下角 点 (n, 1)。
现在每一点 (x, y) 用 1 或者 0 填充。
(x, y) 填 0,表示 KIKI 将要从点 (x, y) 走一步,必败。
2、 设当前点是 (x, y), 那么下一个点 可能有3 个 :(x, y - 1), (x + 1, y - 1), (x + 1, y)
状态从左下角点 (n, 1) (显然,这个点 填0),往前推,一直到右上角点 (1, m);
往前推的过程, 点 (x, y) 可能是有 这3个点走一步得到。
只有这3个点都是1 的时候,点(x, y) 才可能是 0;
依据这个性质,很容易画出整个表。观察发现, 与点 (n, 1) 间隔距离为奇数的行,全是1.
同理,与点 (n, 1) 间隔距离为奇数的列,也全是1.
进一步推理出来,只有 n 和 m同是奇数, 右上角点 (1, m) 的状态才可能是 0;

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n, m;

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

/*
5 3
5 4
6 6
0 0
*/

/*
What a pity!
Wonderful!
Wonderful!
*/

猜你喜欢

转载自blog.csdn.net/qq_38232157/article/details/108456346
今日推荐