问题描述:

围绕着山顶有10个洞,一只狐狸和一只兔子住在各自的洞里。狐狸想吃掉兔子。一天,兔子对狐狸说:“你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我;第二次隔1个洞找我,第三次隔2个洞找我,以后依次类推,次数不限,若能找到我,你就可以饱餐一顿。不过在没有找到我以前不能停下来。”狐狸满口答应,就开始找了。它从早到晚进了1000次洞,累得昏了过去,也没找到兔子,请问,兔子躲在几号洞里?

分析:

我们设定一个数组a[11],用来表示这10个山洞(a[0]不使用),并且初始化为0(数组元素值为0表示该洞穴狐狸没有进入过),然后用多次循环模拟狐狸找兔子的过程,狐狸找兔子的循环肯定是有一个有限循环,我们不妨设置为1000,因为狐狸找了1000次还找不到兔子的话,早就累死了=.=

然后,这10个山洞是围成了一个圈的,所以是在循环访问数组中的内容,用除n取余来限制。

程序代码:

#include<iostream>
using namespace std;
int main(){
int a[11]={0};
int i=0,k=0;
int n=10;
for(i=1;i<=1000;i++){ //设定循环的次数,也就是狐狸找兔子的次数
k=(k+i)%n; //因为洞穴围成了一个圈
if(k==0)k=n; //当k为0的时候,说明可以整除
a[k]=1; //将数组值设置为1,表示这个洞狐狸已经进入过了
}
for(i=1;i<=n;i++){
if(a[i]!=1){
cout<<"\n洞穴"<<i<<"安全"<<endl;
}
}
cout<<endl;
return 0;
}

运行界面:

延伸思考

题目中说的洞穴是10个洞穴,我们可以很容易的扩展成,让用户输入任何一个可能的洞穴的个数n。

我们只需要让数组大一点就可以了。

#include<iostream>
using namespace std;
int main(){
int a[100]={0};
int i=0,k=0;
int n=10;
cout<<"请输入洞穴的数量n:";
cin>>n;
if(n>=100)
{
cout<<"不好意思,您输入的洞穴数量有些多,请输入一个小于100的数吧"<<endl;
cin>>n;
}
for(i=1;i<=1000;i++)
{ //设定循环的次数,也就是狐狸找兔子的次数
k=(k+i)%n; //因为洞穴围成了一个圈
if(k==0)k=n; //当k为0的时候,说明可以整除
a[k]=1; //将数组值设置为1,表示这个洞狐狸已经进入过了
}
for(i=1;i<=n;i++)
{
if(a[i]!=1)
{
cout<<"\n洞穴"<<i<<"安全"<<endl;
}
}
cout<<endl;
return 0;
}

程序运行界面:

C++经典问题:狐狸找兔子的更多相关文章

  1. FZU 2093 找兔子 状压DP

    题目链接:找兔子 n的范围是[1, 15],可以用0 到 (1<<n)-1 的数表示全部状态,用dp[i] = t表示到达状态i的最少时间是t,对于每个点,如果它能到达的所有点在t秒时都已 ...

  2. C_狐狸和兔子的故事

    题目描述 围绕着山顶有10个洞,一只狐狸和一只兔子各住一个洞.狐狸总想吃掉兔子.一天兔子对狐狸说:“你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我:第二次隔1个洞找我,第 ...

  3. C语言100个经典的算法之兔子总数计算内含printf的用法

    语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一 ...

  4. Java经典案例之-判断兔子的数量(斐波那契数列)

    /** * 描述:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子, * 假如兔子都不死,问每个兔子总数为多少? * 分析:根据题目条件可以推断 * 兔子的规律 ...

  5. SQL经典问题:找出连续日期及连续的天数

    create table tmptable(rq datetime) go insert tmptable values('2010.1.1') insert tmptable values('201 ...

  6. 三个和数组有关的程序题目(C++)

    题目一:有n个整数,使前面各数顺序向后移动m个位置 问题描述: 有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前m个数 程序代码: #include<iostream> us ...

  7. hdu 1222 狼和兔子

    Description There is a hill with n holes around. The holes are signed from 0 to n-1. A rabbit must h ...

  8. python之继承、抽象类、新式类和经典类

    一.上节补充1.静态属性静态属性 : 类的属性,所有的对象共享这个变量 如果用对象名去修改类的静态属性:在对象的空间中又创建了一个属性,而不能修改类中属性的值 操作静态属性应该用类名来操作 例1:请你 ...

  9. [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题

    [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 目录 [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 0x00 摘要 0x01 引言 0x02 ...

随机推荐

  1. 扩展 Yii2 自带的日志组件

    <?php /** * author : forecho <caizhenghai@gmail.com> * createTime : 2015/12/22 18:13 * desc ...

  2. Yii2 关于电子商务的开源项目

    https://github.com/samdark/yii2-shop https://github.com/omnilight/yii2-shopping-cart https://github. ...

  3. 《程序员代码面试指南》第二章 链表问题 将单链表每K个节点之间逆序

    样例 链表1-2-3-4-5-6-7-8-9-10 K=3 ,结果 3-2-1-6-5-4-9-8-7-10 java代码 /** * @Description:将单链表每K个节点之间逆序 * @Au ...

  4. linux学习系列三

    1. 账户与账户安全 账户和组是操作系统的基本概念,linux的组有基本组和附加组之分,一个用户只可以加入到一个基本组中国,但是可以加入到多个附加组中.创建用户时,系统默认会自动创建同名的组,并设置用 ...

  5. 大话设计模式--原型模式 Prototype -- C++实现

    1. 原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象... 注意: 拷贝的时候是浅拷贝 还是 深拷贝, 来考虑是否需要重写拷贝构造函数. 关键在于: virtual Pro ...

  6. HTTP- 头部信息

    HTTP 头部信息由众多的头域组成,每个头域由一个域名,冒号(:)和域值三部分组成.域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在自每行开始处,使用至少一个空格或制表符. ...

  7. python第三篇:python、flask关系映射

    python中关系映射主要包括三种:一对多关系映射.一对一关系映射.多对多关系映射. 一对多关系映射 一方:Student(学生) 添加关联属性和反向引用 多方:Article(文章) 添加外键关联 ...

  8. 纯CSS的jQuery的气泡提示组件

    1. [代码][JavaScript]代码 //调用说明//$(selector).bub($(selector) | string[, options]);//示例: $('#demo1').bub ...

  9. 数据库ACID和mvcc

    一.数据库的ACID性: 原子性(atomicity).一致性(consistency).隔离性(isolation).持久性(durability). 二.原子性 1.原子性:一个事务要么全部完成, ...

  10. OpenCV-Python 霍夫直线检测-HoughLinesP函数参数

    cv2.HoughLines()函数是在二值图像中查找直线,cv2.HoughLinesP()函数可以查找直线段. cv2.HoughLinesP()函数原型: HoughLinesP(image, ...