zoukankan      html  css  js  c++  java
  • ACM刷题之路(十)博弈论 jack & rose

    J jack & rose


    时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
    总提交:139            测试通过:52

    描述

    Jack 和 Rose在泰坦尼克号上邂逅后(1912年),一起玩起了博弈,当时还没博弈论(博弈论,1913年才开始有人研究),但是2人都很聪明,都能够选择最优策略。Jack 和 Rose相对而坐,面前有n个石块,两个人轮流从中取石块,规定每次至少取一个,最多取m个,最后取光者得胜。因为2人关系不一般,游戏规则有点改变,每次开局,Rose先取,而Jack每次最多可以取m+1个,Rose还是最多取m个。

    输入

     输入有多组数据,每组输入int范围内的整数n , m。

    输出

     每一局的胜利者姓名。

    样例输入

    1 1
    2 1

    样例输出

    Rose
    Jack

    元培OJ2011   15年院赛J题


    题解:

    理论上来说:

    R如果想赢,就必须给J留M+2个石头;

    J如果想赢,就必须给R留M+1个石头;

    比如每人最多拿10个石头,目前余下来11个石头的时候,先拿的必输。

    但是J可以比R多拿一个,面对R给J留的M+2的难题时,可以取一个,反而转化为J给R留M+1个石头,最后让J胜利。

    除非R一下子全部拿完,不然就是J赢。

    换句话说,J可以抵挡住R的杀手锏,而R不能抵挡住J的杀手锏,导致J是赢家。


    AC代码:

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int n, m;
    	while (cin >> n >> m) {
    		if (n > m)
    			cout << "Jack" << endl;
    		else
    			cout << "Rose" << endl;
    	}
    	return 0;
    }

              

  • 相关阅读:
    类成员之静态字段和普通字段、静态方法和普通方法
    类的导出
    面向对象之继承
    面向对象之封装
    面向对象与函数式的对比
    计算器
    模拟信用卡登录程序
    /etc/fstab
    解决 Your project contains error(s),please fix them before running your applica ..
    C#之SqlDependency数据库缓存
  • 原文地址:https://www.cnblogs.com/yyzwz/p/13393284.html
Copyright © 2011-2022 走看看