zoukankan      html  css  js  c++  java
  • ACM 数论-博弈 (比赛用)

    1.    Bash博弈(巴什博弈)
          只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。
          /*
          if(n%(m+1)==0)  
          cout<<"后手必胜"<<endl;
          else 
          cout<<"先手必胜"<<endl;
          */

    2.   威佐夫博弈(Wythoff Game):
          有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者      胜利。
          
          若两堆物品的初始值为(x,y),且x<y,则另z=y-x;
          记w=(int)[((sqrt(5)+1)/2)*z  ];
          若w=x,则先手必败,否则先手必胜。
           /*
           while(cin>>n1>>n2)
           {
            if(n1>n2)  swap(n1,n2);              //必须是看小的数是否等于那个公式
            temp=floor((n2-n1)*(1+sqrt(5.0))/2.0);
            if(temp==n1) cout<<"后手必胜"<<endl;
            else cout<<"先手必胜"<<endl;
            }
           */

    nim博弈

    a1 XOR a2 XOR……XOR an !=0 ->先手必胜态

    a1 XOR a2XOR……XOR an==0 ->先手必败态

  • 相关阅读:
    linux 分区格式查看
    MDL原理理解
    linux oracle配置开机启动
    oracle em手动配置
    java字符编码详解
    linux oracle 配置监听器
    mysql 生成时间序列数据
    R实用小技巧
    python将文件夹下的所有csv文件存入mysql和oracle数据库
    遗传算法求解最优化问题
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451485.html
Copyright © 2011-2022 走看看