zoukankan      html  css  js  c++  java
  • 取石子游戏

    【题目描述】

        给出两堆石子数目,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍.最后谁能够把一堆石子取空谁就算赢. 

    【题目链接】

        http://noi.openjudge.cn/ch0205/6266/

    【算法】

    1. 当前状态总可以用(a,b)表示,其中a = n*b + c,则共有三种情况:
      1. c = 0, 则当前手赢 
      2. n>=2,  由于对任意一种状态输赢是确定的,那么按当前手取到(b,c)状态对于当前手的输赢情况进行区分。若(b,c)状态会让当前手赢,则最优取法自然是n*b;反之,若当前手取到(b,c)会输,那么显然对方取到(b,c)也会输,所以当前手的最优取法自然是(n-1)*b。所以不论哪种情况,当前手的最优取法都能让他赢。
      3. n==1, c != 0,此时当前手只能取b,问题递归到接下去(b,c)的1,2,3情况

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    int a,b;
    bool dfs(int x,int y)
    {
        if(x%y==0||x/y>1) return 1;
        return !dfs(y,x-y);
    }
    int main()
    {
        while(cin>>a>>b&&a) {
            if(a<b) swap(a,b);
            if(dfs(a,b)) cout<<"win"<<endl;
            else cout<<"lose"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    通过Nginx,Tomcat访问日志(access log)记录请求耗时
    Nginx+Lua+Redis 对请求进行限制
    windows7+eclipse+hadoop2.5.2环境配置
    ubuntu + hadoop2.5.2分布式环境配置
    CentOS6.5上golang环境配置
    curl POST
    .sh 的运行
    CentOS 安装nginx
    Amazon ec2 改成密码登录方式
    SSH 服务器不用密码
  • 原文地址:https://www.cnblogs.com/Willendless/p/9347649.html
Copyright © 2011-2022 走看看