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

比如初始的时候两堆石子的数目是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. 人工智能在电力系统的应用(PPT)
  2. js可以放gif吗_你清楚,一瓶开过的葡萄酒,最长可以放多久的时间吗?
  3. 45.Keepalived高可用群集
  4. Attachment multiple read API - performance with regular expression
  5. ajax读取文本无响应,如何获得jQuery$.ajax错误响应文本?
  6. UVA11310 Delivery Debacle【铺砖问题】
  7. JavaScript数字精度丢失问题总结
  8. HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR 的区别
  9. VC++2010Express下载
  10. 精通 Spring Boot 42 讲
  11. 六个参数帮你全面了解固态硬盘
  12. Ubuntu16.04 查看硬盘序列号以及系统版本与安装时间
  13. OVP过压保护IC高耐压36V,首选钰泰ETA7008/ETA7014
  14. 智能可以把碎片的事实价值弥聚化
  15. k6新一代性能测试工具
  16. 梯度下降原理(SGD,Adam,BGD,momentum,Adagrad,NAG)
  17. 计算机视觉分析2019冠状病毒疾病的影响
  18. Windows11无法使用PIN码进入系统
  19. Hadoop项目结构及其主要作用
  20. html5 meter样式,css – Chrome中的HTML5 Meter样式

热门文章

  1. 7 点建议助您写出优雅的 Java 代码
  2. 显卡的结构和工作原理及发展历史与现状
  3. 高效办公之超好用的流程图工具
  4. Spring Kafka的Offset提交时机
  5. mapbox-gl开发教程(十):创建marker
  6. python 行列分不清
  7. 计算机专业武汉的就业方向,计算机专业好就业吗
  8. The Controller Placement Problem in Software Defined Networking
  9. C#汽车租凭(面对对象(封装、继承,多态的应用))
  10. 华为区块链项目总监: 华为区块链率先于溯源场景落地