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. 谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT
  2. 在不重装XP系统,增加系统盘剩余空间
  3. STM32的启动分析
  4. 大数据视域下网络涉军舆情管控研究
  5. postman--安装及Interceptor插件
  6. Shell入门(八)之布尔运算
  7. Vue源码解读之事件机制
  8. Sql2Bean代码生成器
  9. LaTeX详细教程+技巧总结
  10. 全球及中国无线硬盘行业发展前景与投资战略规划分析报告2022-2028年
  11. 经纬度距离、范围、方位角计算、坐标转换
  12. 水晶报表java_JAVA水晶报表从环境搭建到创建动态水晶报表
  13. through mysql.sock_MySQL server through socket '/tmp/mysql.sock' (2)
  14. 第三代大数据处理方案Flink
  15. 阿里云服务器登陆宝塔
  16. 房价预测(基于决策树算法)
  17. mpv播放器旋转视频
  18. 2017年软考好玩的七律诗一首
  19. Win10局域网远程
  20. 串口通信校验方式:奇偶校验、累加和校验

热门文章

  1. 93、Viewport详解
  2. 美国CISA联合发布了勒索软件防护指南
  3. C#中的方括号的语法及作用
  4. 配置Exchange邮箱服务器
  5. android仿微信发布动态功能,Android 类似微博、微信展示动态(Feed)的WeiBoLayout
  6. 测试小白历经十年磨难的人生感悟——写给还在迷茫中的朋友
  7. Maven的META-INF文件的生成
  8. IIS服务器支持flv,f4v,mp4在线播放
  9. 算法学习笔记之三:八皇后问题(递归、回溯)
  10. 大数据之Sqoop 二