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

比如初始的时候两堆石子的数目是25和7。

25 7 --> 11 7 --> 4 7 --> 4 3 --> 1 3 --> 1 0
选手1取 选手2取 选手1取 选手2取 选手1取

最后选手1(先取的)获胜,在取的过程中选手2都只有唯一的一种取法。

给定初始时石子的数目,如果两个人都采取最优策略,请问先手能否获胜。

【输入】
输入包含多数数据。每组数据一行,包含两个正整数a和b,表示初始时石子的数目。

输入以两个0表示结束。

【输出】
如果先手胜,输出"win",否则输出"lose"。

【输入样例】
34 12
15 24
0 0
【输出样例】
win
lose
【提示】
假设石子数目为(a,b)且a >= b,如果[a/b] >= 2则先手必胜,如果[a/b]<2,那么先手只有唯一的一种取法。[a/b]表示a除以b取整后的值。

以下代码只得了20分 没过

#include<iostream>
using namespace std;
void search(int a, int b, int s)
{if (a < b) swap(a, b);if (a / b >= 2){if (s % 2 != 0) cout << "win" << endl;else cout << "lose" << endl;return;}else  search(a - b, b, s+1);
}
int main()
{int a, b;while (cin >> a >> b && a && b){search(a, b, 1);}}

正确代码

改变了一点,就是定义了swap,如果不定义自己试了几个数据没啥问题

#include<iostream>
using namespace std;
void swap(int& a, int& b)//注意swap定义方式是&a,&b!!!!!!!!!
{int t = a;a = b;b = t;
}
void search(int a, int b, int s)
{if (a < b) swap(a, b);if (a / b >= 2){if (s % 2 != 0) cout << "win" << endl;else cout << "lose" << endl;return;}else  search(a - b, b, s+1);
}
int main()
{int a, b;while (cin >> a >> b && a && b){search(a, b, 1);}}

1218:取石子游戏(swap)相关推荐

  1. 1218:取石子游戏

    1218:取石子游戏时间限制: 1000 ms 内存限制: 65536 KB 提交数: 4462 通过数: 2049 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取, ...

  2. 信息学奥赛一本通 1218:取石子游戏 | OpenJudge NOI 2.5 6266:取石子游戏

    [题目链接] ybt 1218:取石子游戏 OpenJudge NOI 2.5 6266:取石子游戏 [题目考点] 1. 博弈:完全信息博弈 博弈树: 博弈树的结点对应于某一个棋局,其分支表示走一步棋 ...

  3. 博弈论——1218:取石子游戏

    1218:取石子游戏时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10430 通过数: 4939 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取 ...

  4. 信息学奥赛一本通(1218:取石子游戏)

    1218:取石子游戏 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 8837     通过数: 4144 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候, ...

  5. 搜索与回溯:取石子游戏

    1218:取石子游戏 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 4790     通过数: 2208 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候, ...

  6. POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K              Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...

  7. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  8. POJ1067 HDU1527 取石子游戏【博弈】

    取石子游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. 博弈问题-取石子(D题小牛vs小客)附取石子游戏总结

    题目: 链接:https://www.nowcoder.net/acm/contest/75/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  10. 取石子游戏(hdu1527+威佐夫博弈)

    S - 取石子游戏 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Submit ...

最新文章

  1. 算法刷题宝典.pdf
  2. Mac系统的JDK8默认安装路径
  3. 操作系统课设--具有优先级的线程调度
  4. 使用git版本管理时的免密问题
  5. 基于android对接百度地图搜索附近关键字列表展示并调用第三方地图应用打开导航(百度地图、高德地图)
  6. 存储可向外扩展无线传输
  7. IOS一些常用的越狱渠道
  8. The labor day's schedule and the rate of process
  9. 190302每日一句
  10. 要管理组策略 您必须以域用户账户登录此计算机,让AD域用户账户只能登陆管理员指定的客户端计算机...
  11. 8uftp更改上传的网页内容
  12. c++ 实现meanshift
  13. Pycharm使用技巧:Split Vertically/Horizontally(垂直/水平拆分窗口)
  14. WePhone手机软件已下架 疑因资金问题导致无法使用
  15. 名词解释atm网络_电信技术名词解释:什么是ATM技术
  16. 查看caj文件与chm文件
  17. 日本亚马逊海淘经验-2015
  18. BN、CBN、CmBN 的对比与总结
  19. 第二篇 编写一个fluter应用
  20. 制作自己的ip数据库

热门文章

  1. 3个案例讲清如何构建“What-if分析”,教你轻松玩转动态参数
  2. 人在弥留之际的五大憾事
  3. 单单训练营 第四期 第一课 做自己的CEO
  4. 英语和汉语语法方面的区别(语言类型学)
  5. 安农计算机学院在哪个门附近,千万不要去安农大,因为……
  6. 使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现
  7. pe创建激活administrator后消除问题,删除用户问题
  8. 同盾设备指纹简单分析及手机相关ID了解
  9. 微信内置浏览器屏蔽网页链接怎么办,微信跳转外部浏览器的实现教程
  10. 浅谈华为如何实现区块链的安全隐私保护