hdu 2147 巴什博弈+PN图

本文解析了HDU2147这道博弈论题目,通过定义P/N状态来判断玩家胜负条件,并给出了具体的实现代码示例。

题目链接:hdu 2147

定义两个状态:

P:面对P时先手必输

N:面对N时先手必胜

PN点的确定规则:如果一个点能转换到的所有点都是N,那么此点状态为P。

                            若能转化到一个P,即使对手面临必输状态,此点为N

所以从终点开始,先确定横纵坐标分别为1的点的状态,在确定中间点的状态。

找到规律就能确定n,m点的状态了

例:5*5的矩阵pn图

P N P N P

N N N N N

P N P N P

N N N N N

P N P N P

#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
#include<map>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define sqr(a) (a)*(a)
#define lan(a,b) memset(a,b,sizeof(a))

using namespace std;

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值