当前位置: 代码迷 >> 综合 >> HOJ 2147 kiki‘s game(P-position, N-position 游戏入门)
  详细解决方案

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

热度:36   发布时间:2023-12-13 19:02:52.0

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! */
  相关解决方案