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; } }