C++经典问题:狐狸找兔子
问题描述:
围绕着山顶有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++经典问题:狐狸找兔子的更多相关文章
- FZU 2093 找兔子 状压DP
题目链接:找兔子 n的范围是[1, 15],可以用0 到 (1<<n)-1 的数表示全部状态,用dp[i] = t表示到达状态i的最少时间是t,对于每个点,如果它能到达的所有点在t秒时都已 ...
- C_狐狸和兔子的故事
题目描述 围绕着山顶有10个洞,一只狐狸和一只兔子各住一个洞.狐狸总想吃掉兔子.一天兔子对狐狸说:“你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我:第二次隔1个洞找我,第 ...
- C语言100个经典的算法之兔子总数计算内含printf的用法
语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一 ...
- Java经典案例之-判断兔子的数量(斐波那契数列)
/** * 描述:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子, * 假如兔子都不死,问每个兔子总数为多少? * 分析:根据题目条件可以推断 * 兔子的规律 ...
- SQL经典问题:找出连续日期及连续的天数
create table tmptable(rq datetime) go insert tmptable values('2010.1.1') insert tmptable values('201 ...
- 三个和数组有关的程序题目(C++)
题目一:有n个整数,使前面各数顺序向后移动m个位置 问题描述: 有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前m个数 程序代码: #include<iostream> us ...
- hdu 1222 狼和兔子
Description There is a hill with n holes around. The holes are signed from 0 to n-1. A rabbit must h ...
- python之继承、抽象类、新式类和经典类
一.上节补充1.静态属性静态属性 : 类的属性,所有的对象共享这个变量 如果用对象名去修改类的静态属性:在对象的空间中又创建了一个属性,而不能修改类中属性的值 操作静态属性应该用类名来操作 例1:请你 ...
- [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题
[记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 目录 [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 0x00 摘要 0x01 引言 0x02 ...
随机推荐
- c++学习笔记(网上资料)
C++笔记 2007-3-22 1. 程序 —— 可执行文件,人发送给计算机的一组指令. 硬件指令是二进制, ...
- 每天一个Linux命令(19)find命令_初识
Linux下find命令在目录结构中搜索文件,并执行指定的操作. (1)用法: 用法: find pathname -option [-print | -exec | -ok] ...
- P4619 [SDOI2018]旧试题
题目 P4619 [SDOI2018]旧试题 Ps:山东的题目可真(du)好(liu),思维+码量的神仙题 推式 求\(\sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^Cd(ij ...
- 10款CSS3进度条Loading动画
在线演示 本地下载
- PyVim
PyVim主要用于连接到 Service Instance import atexit from pyVim import connect // Connect to Server If args.d ...
- Docker 镜像篇
镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器. docker两个跟镜像有关的命令: hello-world - 最小的镜像 hello-world 是 Docker 官 ...
- 算法(Algorithms)第4版 练习 1.5.9
不可能.如果是weighted quick-union的话,6的父节点应该是5,而不是5的父节点是6.
- Hive报错 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D
报错信息如下 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyn ...
- Linux课程---4、Linux目录结构及常用命令(目录结构)
Linux课程---4.Linux目录结构及常用命令(目录结构) 一.总结 一句话总结: 家目录:./root:root用户的家目录 能执行的程序:./bin:所有用户都能执行的程序:./sbin:只 ...
- Java_基础_01_static和final
二.参考资料 1.java入门之关键字static和final 2.static和final的区别