HDU 2147

想了两天- - 、  最近才看懂,只要是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; 
    }
} 

 

posted @ 2016-01-30 10:36  我不萌、我要高冷  阅读(274)  评论(0编辑  收藏  举报