Problem

Description

狐狸吃兔子:某地有N个洞(0,1,2,3…,N-1),狐狸住第0号,狐狸每次从左向右搜索一次,搜索方法为:
正向搜索:先从1号洞,隔一个,搜索3号洞,然后隔两个搜索6号洞,然后隔3个搜索10号洞,以此类推。
逆向搜索:先从N-1号洞,隔一个,搜索N-3号洞,然后隔两个搜索N-6号洞,然后隔3个搜索N-10号洞,以此类推。
狐狸搜索过的洞兔子都不能住,请输出兔子可以住的洞。

Input

一个正整数N,表示总的洞穴数量。

Output

第一行:兔子可以住的洞穴编号,以空格分隔。
第二行:兔子可以住的洞穴数量

Code

代码一

使用malloc()进行动态内存分配,这种方法耗费空间。

#include<iostream>
using namespace std;int main()
{int N;//总的洞穴数量int s = 2;int count = 0;//记录兔子可以住的洞的数量cin >> N;bool *flag=(bool*)malloc(N);//能存放N个元素的数组for (int i = 1; i < N; i++)flag[i] = true;//初始化为true,true表示狐狸没有搜索过for (int i = 1, j = N - 1; i < N; i += s, j -= s,s++)//标记狐狸搜索过的洞{flag[i] = false;flag[j] = false;}for (int i = 2; i < N - 1; i++)//检查哪些洞兔子可以住{if (flag[i] == true){count++;cout << i << ' ';//输出兔子可以住的洞的编号} }cout << endl;cout << count << endl;return 0;
}

代码二

利用循环,检测每个洞穴 是否被正向搜索过 或者 是否被逆向搜索过。

#include<iostream>
using namespace std;/*
* 正向搜索到的洞穴编号(是一个累加的过程:1+2+3+4+...):
* 1
* 1+2 = 3
* 1+2+3 = 6
* 1+2+3+4 = 10
* ...
* 逆向搜索到的洞穴编号:
* N-1
* N-1-2 = N-3
* N-1-2-3 = N-6
* N-1-2-3-4 = N-10
* ...
*/int main()
{int N;//输入的洞穴数量int count = 0;//记录兔子可以住的洞的数量cin >> N;int d = 2;//步长for (int i = 1; i < N; i++){bool flag = true;for (int j = 1; j < N;)//正向搜索{if (j == i)//洞被狐狸搜索过,则flag置为false{flag = false;break;}if (j > i)//洞没有被搜索过,提前结束,减少循环,减少运行时间break;j = j + d;//搜索到的下一个洞穴的编号d++;}if (flag == true) {//正向搜索没有搜索过的洞穴,才检查逆向搜索d = 2;for (int j = N - 1; j < N;)//逆向搜索{if (j == i){flag = false;break;}if (j < i)//j<i,洞没有被搜索过,提前结束循环break;j = j - d;//搜索到的下一个洞穴的编号d++;}}d = 2;//重置步长if (flag == true) {count++;cout << i << ' ';}}cout << endl;cout << count << endl;return 0;
}

若有错误请留言。

04-狐狸吃兔子(C++)相关推荐

  1. 狐狸吃兔子模型元胞自动机

    下载地址 原博客地址 项目介绍 狐狸吃兔子模型元胞自动机 标签 Java.JavaGUI.元胞机 技术工具选型 Java.JavaGUI.元胞机 安装与使用 导入到IDEA或者Eclipse 配置JD ...

  2. C语言中狐狸找兔子的问题

    狐狸找兔子的问题 围绕着山顶有10个洞,一只兔子和一只狐狸住在各自的洞里,狐狸总想吃掉兔子,一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10,你从第10洞出发,先到第1号洞找我,第二次隔一个 ...

  3. java写 狐狸找兔子_狐狸找兔子(java 版)

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

  4. 翁恺老师 狐狸和兔子练习

    习题描述 狐狸.兔子都有年龄: 到达一定年龄上限会自然死亡: 狐狸随机吃掉周围一只兔子: 狐狸.兔子可以随机生一只小的放在旁边格子: 如果不吃不生,狐狸.兔子可以随机向旁边格子移一步会随机吃掉 Ani ...

  5. 狐狸逮兔子实验 c++

    实验描述 狐狸逮兔子实验 (一)问题描述 围绕着山顶有10个圆形排列的洞,互利要吃兔子,兔子说:"可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二 ...

  6. 数据结构C语言狐狸抓兔子链表实现

    刚开始学习数据结构,老师布置了一道题,自己用代码实现了.第一次用博客,排版这些也不怎么会.希望能和数据结构新手一起学习,也希望大神指点指点. 题目如下 围绕着山顶有10 个圆形排列的洞.狐狸要吃兔子, ...

  7. 狐狸和兔子围绕山洞c语言,有关与老虎狐狸和兔子的童话故事

    森林里,大大小小.食肉5261的.食草的动物们生活在一起,各4102自都有各自的觅食本领,1653都在一块儿成长长大.一只狐狸在生活之余,感觉闲着无聊,便自愿做了教书先生,每天傍晚时分,在湖畔一棵大树 ...

  8. 综合实验一 狐狸逮兔子

    一)问题描述 围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二次隔2个洞(即6号洞)找,以 ...

  9. 综合实验:狐狸逮兔子

    实验要求:(一)问题描述 围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二次隔2个洞(即6 ...

最新文章

  1. Level3公司在哥伦比亚开通运营第三个数据中心
  2. android view控件的显示和隐藏动画效果
  3. jQuery mobile 图标
  4. c++深拷贝和浅拷贝的区别?
  5. Spring Boot + Vue 前后端分离,两种文件上传方式总结
  6. 关于前端设置cookie
  7. linux操作系统2试题,RedHat Linux 9.0 操作系统测试题2
  8. Git下使用Beyond Compare作为比较和合并工具
  9. Spring的春天,直接召唤系--Singleton的Application Context
  10. Scrapy 中的 Request 对象和 Respionse 对象
  11. 如何让百度云里的资源不被和谐掉?
  12. 微信小程序自定义屏幕调试
  13. mysql 备份库的shell_shell脚本之 备份mysql数据库
  14. 关于把秒换算成分钟和小时的c程序
  15. 欧美slots游戏 源码(完整)
  16. Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系
  17. 《深入解读Windows操作系统》之系统构架
  18. AR.js 学习笔记
  19. 响应式织梦模板风景摄影写真类网站
  20. 微信应用号 +QQ娱乐社交 腾讯能否独步天下?

热门文章

  1. linux 扩展根目录
  2. RadioButton去掉小圆圈、设置图片、文字居于图片下方
  3. 趣图:雷军的代码像诗一样优雅
  4. 手机APP分析平台项目(一)
  5. Linux驱动——mmc host controller(九)
  6. Ubuntu彻底清除history命令历史记录
  7. 高效的敏捷测试第一课 敏捷测试介绍,与传统测试对比
  8. EXCEL 2007/2010/2016 绿色版使用“汉字重选”功能时闪退
  9. 采用pci的插槽计算机,同三维高清视频采集卡使用PCI-E插槽的优势
  10. 计算机组成原理AR单元,计算机组成原理重点