问题描述:

围绕着山顶有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. Elasticsearch的几种架构(ELK,EL,EF)性能对比测试报告

    Elasticsearch的几种架构性能对比测试报告 1.前言 选定了Elasticsearch作为存储的数据库,但是还需要对Elasticsearch的基础架构做一定测试,所以,将研究测试报告输出如 ...

  2. 解决编译caffe2遇到的坑

    首先我们要从源码克隆caffe2的库: git clone --recursive https://github.com/caffe2/caffe2.git 执行下载过程会报这样的错: Cloning ...

  3. [原创]java WEB学习笔记10:GenericServlet

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. WebSocket实现Web聊天室

    一.客户端: JS代码如下: /* * 这部分js将websocket封装起来 */ var websocket = null; //判断当前浏览器是否支持WebSocket if ('WebSock ...

  5. Can I run a local BLAST search again multiple blast databases simultaneously?

    from: https://secure.clcbio.com/helpspot/index.php?pg=kb.page&id=113 Can I run a local BLAST sea ...

  6. Memory Layout (Virtual address space of a C process)

    Memory Layout (Virtual address space of a C process) 分类: C语言基础2012-12-06 23:16 2174人阅读 评论(0) 收藏 举报 f ...

  7. Hibernate和Struts分页查询

    分页查询数据库方法 /** * 分页查询方法 * @param sql,pageNO,maxResult * @return List */ public List<Object> que ...

  8. tkinter窗口系列之一——列表框

    以下内容来自https://tkdocs.com/tutorial/morewidgets.html 一个列表框显示由单行文本所组成的一栏条目,通常它很冗长,它允许使用者通过列表浏览其中的内容,选择一 ...

  9. spring学习(5)

    bean配置 启用注解 <context:annotation-config/> 使用spring的特殊bean 对bean BeanPostProcessor spring本身提供的特殊 ...

  10. 我对java的理解(一)——注解就是贴标签

    在现实生活中,贴标签这种现象比比皆是.去超市,去商场,每个或者每类物品都会有它的标签,甚至在我们自己身上也会有标签,比如,程序猿.逗逼.单身狗.80/90后.屌丝……呵呵,太多了.有时候,我们也会戏谑 ...