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 }
  • 相关阅读:
    caffe绘制训练过程的loss和accuracy曲线
    第32题 最长匹配括号
    http://deepdish.io/2015/04/28/creating-lmdb-in-python/
    caffe神经网络模型的绘图
    数据制作
    mnist测试
    caffe环境搭建笔记
    图论之遍历所有点的最小距离
    DesignSurface简介
    给交换机端口设ip
  • 原文地址:https://www.cnblogs.com/Xycdada/p/6752283.html
Copyright © 2011-2022 走看看