zoukankan      html  css  js  c++  java
  • hdu 1517 博弈论

    先引入必胜点和必败点两个概念:
    必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。
    必胜点(N点) :下一个选手(Next        player)将取胜的位置称为必胜点。
    对于这两个概念的描述,我开始的时候也搞不懂。
    其实可以从字面理解,简单说来,就是当你走到某一点的时候,如果你无论怎么走也不能赢对方,此时你必败,这个点就叫做必败点。

    算法实现:

    步骤1:将所有终结位置标记为必败点(P点);(终结位置指的是不能将游戏进行下去的位置)
    步骤2:将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)
    步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点) ;
    步骤4:如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。

     1 #include <math.h>
     2 #include <stdio.h>
     3 #include<iostream>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     unsigned int n,x;
    10     while(~scanf("%u",&n))
    11     {
    12         for(x=0;n>1;x++)
    13         {
    14             if(x&1)
    15                 n = ceil(n*1.0/2); //返回不小于括号里的最小整数
    16             else
    17                 n = ceil(n*1.0/9);
    18             //cout<<x<<' '<<n<<endl;
    19         }
    20         puts(x&1?"Stan wins.":"Ollie wins.");
    21     }
    22     return 0;
    23 }
  • 相关阅读:
    CHttpFile调试
    关于linux下网络编程socket 转换IP问题 inet_ntoa()
    vc使用SetTimer回调函数
    OpenGL+VC6.0开发环境搭建
    Java StringBuffer和StringBuilder类
    Java String类
    Java 异常处理
    hashcode()和equals()的作用、区别、联系
    抽象类可以继承实体类吗?
    Java 向上造型详解
  • 原文地址:https://www.cnblogs.com/Xycdada/p/6752283.html
Copyright © 2011-2022 走看看