04-狐狸吃兔子(C++)
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++)相关推荐
- 狐狸吃兔子模型元胞自动机
下载地址 原博客地址 项目介绍 狐狸吃兔子模型元胞自动机 标签 Java.JavaGUI.元胞机 技术工具选型 Java.JavaGUI.元胞机 安装与使用 导入到IDEA或者Eclipse 配置JD ...
- C语言中狐狸找兔子的问题
狐狸找兔子的问题 围绕着山顶有10个洞,一只兔子和一只狐狸住在各自的洞里,狐狸总想吃掉兔子,一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10,你从第10洞出发,先到第1号洞找我,第二次隔一个 ...
- java写 狐狸找兔子_狐狸找兔子(java 版)
围绕着山顶有10个洞,一只狐狸和一只兔子住在各自的洞里.狐狸想吃掉兔子.一天,兔子对狐狸说:"你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我:第二次隔1个洞找我 ...
- 翁恺老师 狐狸和兔子练习
习题描述 狐狸.兔子都有年龄: 到达一定年龄上限会自然死亡: 狐狸随机吃掉周围一只兔子: 狐狸.兔子可以随机生一只小的放在旁边格子: 如果不吃不生,狐狸.兔子可以随机向旁边格子移一步会随机吃掉 Ani ...
- 狐狸逮兔子实验 c++
实验描述 狐狸逮兔子实验 (一)问题描述 围绕着山顶有10个圆形排列的洞,互利要吃兔子,兔子说:"可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二 ...
- 数据结构C语言狐狸抓兔子链表实现
刚开始学习数据结构,老师布置了一道题,自己用代码实现了.第一次用博客,排版这些也不怎么会.希望能和数据结构新手一起学习,也希望大神指点指点. 题目如下 围绕着山顶有10 个圆形排列的洞.狐狸要吃兔子, ...
- 狐狸和兔子围绕山洞c语言,有关与老虎狐狸和兔子的童话故事
森林里,大大小小.食肉5261的.食草的动物们生活在一起,各4102自都有各自的觅食本领,1653都在一块儿成长长大.一只狐狸在生活之余,感觉闲着无聊,便自愿做了教书先生,每天傍晚时分,在湖畔一棵大树 ...
- 综合实验一 狐狸逮兔子
一)问题描述 围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二次隔2个洞(即6号洞)找,以 ...
- 综合实验:狐狸逮兔子
实验要求:(一)问题描述 围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二次隔2个洞(即6 ...
最新文章
- 谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT
- 在不重装XP系统,增加系统盘剩余空间
- STM32的启动分析
- 大数据视域下网络涉军舆情管控研究
- postman--安装及Interceptor插件
- Shell入门(八)之布尔运算
- Vue源码解读之事件机制
- Sql2Bean代码生成器
- LaTeX详细教程+技巧总结
- 全球及中国无线硬盘行业发展前景与投资战略规划分析报告2022-2028年
- 经纬度距离、范围、方位角计算、坐标转换
- 水晶报表java_JAVA水晶报表从环境搭建到创建动态水晶报表
- through mysql.sock_MySQL server through socket '/tmp/mysql.sock' (2)
- 第三代大数据处理方案Flink
- 阿里云服务器登陆宝塔
- 房价预测(基于决策树算法)
- mpv播放器旋转视频
- 2017年软考好玩的七律诗一首
- Win10局域网远程
- 串口通信校验方式:奇偶校验、累加和校验