HDU 2147

本文详细介绍了PN图的概念及其在取子游戏中的应用。PN图通过区分必胜点(N点)和必败点(P点)来预测游戏结局。文章还提供了具体的算法实现步骤,帮助读者更好地理解如何运用PN图进行游戏策略设计。

想了两天- - 、  最近才看懂,只要是PN图不知道是什么东西,理解力太差

http://www.tuicool.com/articles/JFJZ3i

这个介绍的很详细、

PN图的由来也推了出来

原来航点上的课件也有PN图推导的由来、

概念:必败点和必胜点(P点 & N点)

必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。
必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。
 
必败(必胜)点属性

(1) 所有终结点是必败点(P点);

(2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点);

(3)无论如何操作, 从必败点(P点)都只能进入必胜点(N点).

 

取子游戏算法实现——

步骤1:将所有终结位置标记为必败点(P点);

步骤2: 将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)

步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点) ;

步骤4: 如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。

#include<iostream>
using namespace std;
int main()
{
    int n,m;
    while(cin >> n >> m &&(m||n))
    {
        if(n%2&&m%2)    cout << "What a pity!" << endl;
        else            cout << "Wonderful!" << endl; 
    }
} 

 

转载于:https://www.cnblogs.com/sasuke-/p/5170607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值