趣味二分法
来源:互联网 发布:改装荣威矩阵式led大灯 编辑:程序博客网 时间:2024/05/01 03:13
趣味游戏:猜数字
前序:历史渊源
不晓得你是否玩过猜数字的游戏?如果玩过,那么你猜对过几回呢?你是怎样猜对的?有什么诀窍吗?
记得当年头几次玩这个游戏的时候,那就是一个胡猜,加上老天也不助我,一次都没有蒙对,想起来很是悲催。所以当时就有一个念头:自己买彩票肯定中不了!后来在开始学习编程时,有一次课间休息的时候老师让大家来做个游戏,说是猜数字。我当时就有点不淡定了。结果玩了几个回合,大家猜的都不咋的,但是老师那家伙是一猜一个准,我当时就感觉真厉害。于是乎,他就把他自己写的代码给我们看,看完之后,大家都惊呼:原来是这样啊,要是我知道我也能猜对!
那到底是怎样呢?我们来看看。
正文:道出原委
其实,猜数字想要猜对很容易。其核心就是利用二分法的思想。闲言少叙,我还是用一个例子来说明过程吧。
要求:有两个人甲和乙,在1——100这100个数中,由甲随意写一个数(只有甲知道),现在由乙来猜甲写的这个数,并且猜对这个数时猜的次数最少。
分析:对于这个问题,有两种情况。
情况一:想都不用想,随便猜。这样,猜对时所用的次数就是1 <= N <= 100.如果你命好,一次或者两次就猜对了,那么恭喜你,你真的可以去买彩票了;相反,你就要用好几十次才能猜对。
情况二:利用二分法。过程如下:
不晓得你是否玩过猜数字的游戏?如果玩过,那么你猜对过几回呢?你是怎样猜对的?有什么诀窍吗?
记得当年头几次玩这个游戏的时候,那就是一个胡猜,加上老天也不助我,一次都没有蒙对,想起来很是悲催。所以当时就有一个念头:自己买彩票肯定中不了!后来在开始学习编程时,有一次课间休息的时候老师让大家来做个游戏,说是猜数字。我当时就有点不淡定了。结果玩了几个回合,大家猜的都不咋的,但是老师那家伙是一猜一个准,我当时就感觉真厉害。于是乎,他就把他自己写的代码给我们看,看完之后,大家都惊呼:原来是这样啊,要是我知道我也能猜对!
那到底是怎样呢?我们来看看。
正文:道出原委
其实,猜数字想要猜对很容易。其核心就是利用二分法的思想。闲言少叙,我还是用一个例子来说明过程吧。
要求:有两个人甲和乙,在1——100这100个数中,由甲随意写一个数(只有甲知道),现在由乙来猜甲写的这个数,并且猜对这个数时猜的次数最少。
分析:对于这个问题,有两种情况。
情况一:想都不用想,随便猜。这样,猜对时所用的次数就是1 <= N <= 100.如果你命好,一次或者两次就猜对了,那么恭喜你,你真的可以去买彩票了;相反,你就要用好几十次才能猜对。
情况二:利用二分法。过程如下:
实现代码如下:
结束语
写本文的目的:轻松一刻!
#include<iostream>#include<cmath>#include<stdlib.h>using namespace std;void prompt();int CreateNum();int GuessNum();bool Comp(int result,int gn);int main(){ int result,i,gn; prompt(); result = CreateNum(); for(i = 0;i < 7;i++) { gn = GuessNum(); if(Comp(result,gn)) { cout<<"你猜对了,厉害!"<<endl; break; } else cout<<"不对,请继续猜!"<<endl; } //Comp(result,gn); cout<<"系统所产生的数是:"<<result; return 0;}//...输出游戏的提示信息void prompt(){ cout<<"---------欢迎你来玩猜数字游戏----------"<<endl; }//...系统自动产生从1~100之间的随机数int CreateNum(){ srand( (unsigned) time(NULL)); int result = (rand()%100) +1; //int result = (int)(100*rand()/(RAND_MAX+1.0)); return result; }//...请你输入一个所猜的数int GuessNum(){ int gn; cout<<"请输入您所猜的数:"; cin>>gn; return gn; }//...比较两数是否相等bool Comp(int result,int gn){ if(result == gn) { cout<<"恭喜你!猜对了,真厉害!"<<endl; return 1; } else if(result > gn) { cout<<"小了,大点!"<<endl; } else cout<<"大了,小点!"<<endl; return 0;}OK,猜数字的游戏就是这样来玩的。如果你有兴趣的话试一下吧!权当放松心情,缓解一下疲劳吧!
结束语
写本文的目的:轻松一刻!
- 趣味二分法
- 二分法~~
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- 二分法
- Chrome浏览器在用户访问一个不存在的网址时,会重新发起一个请求?
- java面向对象思想笔记
- 《设计模式解析》 第14章 设计模式的原则与策略 复习题
- 如何用UltraISO制作ISO文件?
- while(scanf("%d",&n)!=EOF) ——那件小事
- 趣味二分法
- mysql restore from sql damp
- CATCH缓存
- CHK文件恢复
- scanf, sscanf 函数用法
- Android学习三、SurfaceView的学习
- 学习Android平台的Open GL ES, 首先要搞清楚GLSurfaceView
- java String的比较
- linux fork函数浅析