博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Openjudge-计算概论(A)-取石子游戏
阅读量:4543 次
发布时间:2019-06-08

本文共 707 字,大约阅读时间需要 2 分钟。

描述:

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

比如初始的时候两堆石子的数目是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 1215 240 0

样例输出

winlose

提示:假设石子数目为(a,b)且a >= b,如果[a/b] >= 2则先手必胜,如果[a/b]<2,那么先手只有唯一的一种取法.

[a/b]表示a除以b取整后的值.

思路:这题虽然是归类在函数与递归里面,但其实可以不用递归,递归可能会超时,具体怎么做提示里面已经给的很清楚了,这里就不用多解释了。

代码如下:

1 #include
2 int main() 3 { 4 int a,b; 5 int t,f,c; 6 scanf("%d%d",&a,&b); 7 while(a!=0&&b!=0) 8 { 9 if(a

 

转载于:https://www.cnblogs.com/geek-007/p/4296743.html

你可能感兴趣的文章
第5月第13天 node cnpm安装 babel
查看>>
QTC++监控USB插拔
查看>>
Java生成javadoc
查看>>
ZedGraph控件的使用--属性和例子代码
查看>>
文件管理
查看>>
webpack
查看>>
Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
查看>>
Atitit 图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)...
查看>>
Android Camera——拍照(转自http://vaero.blog.51cto.com/4350852/779942)
查看>>
Java Web项目移植
查看>>
11月的第一天
查看>>
2011简单总结
查看>>
android的Environment类,记录一下
查看>>
工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLocal区别
查看>>
今日笔记:持续集成、面向对象设计方法
查看>>
c语言诊断_断言库函数#include<assert.h>
查看>>
input type="file"获取文件名方法
查看>>
强力上攻后,缓解期结束,MACD死叉的案例
查看>>
Linux文件权限
查看>>
js替换字符串中特殊字符
查看>>