2019深信服笔试 —— 猎人抓兔子
2019深信服笔试 —— 猎人抓兔子
题目描述:
假设兔子有n个排成一排的洞,编号为1和n。兔子每天晚上跳到相邻的一个洞里住,而猎人每天白天检查其中的一个洞。猎人告诉你每天检查的洞的编号,希望你分析一下是否一定能抓到兔子。
输入描述:
首先输入n和k(n,k<1000),分别表示洞的个数和猎人要检查的天数;接下来输入k个整数,表示猎人每天检查的洞的编号。
输出描述:
对于每个样例,如果一定能抓到兔子,输出Yes,否则输出No。
示例:
样例1:
输入:
3 2
2 2
输出:
Yes
思路分析:
首先将所有洞口的值置为1,表示兔子可能在此洞中;假设猎人每次检查洞口都抓不到兔子(兔子不在此洞中),将该洞口的值置为0;再将每天晚上兔子可能跳到的洞口值置为1,不可能跳到的洞口值置为0,当所有的洞口全为0的时候兔子无洞可逃,则肯定会被猎人抓住。
代码如下:
#include<iostream>
#include<vector>
using namespace std;void print(vector<int> ivec)
{for (size_t i = 0; i < ivec.size(); i++){cout << ivec[i] << " ";}cout << endl;
}
bool canCatchRibbit(vector<int> holeNums, vector<int> checked)
{int k = holeNums.size();int n = checked.size();bool flag = true;int cnt = n; // cnt为兔子能待的洞的个数,初试化为所有洞的个数for (int i = 0; i < k; i++){int holeNum = holeNums[i] - 1; // holeNum为洞的编号在vector中的序号,// 如:编号为1的洞在vector里面存的是0if (checked[holeNum] == 1){checked[holeNum] = 0;cnt--;}print(checked);cout << "----------------" << endl;if (cnt == 0) // 如果兔子能待的洞的个数为0,则兔子肯定会被逮住{flag = false;break;}int temp = checked[n - 2];for (int j = 0; j < n; j++){if (checked[j] == 1){checked[j] = 0;cnt--;if (j>0 && checked[j - 1] == 0){checked[j - 1] = 1;cnt++;}if (j < n - 1 && checked[j + 1] == 0){checked[j + 1] = 1;cnt++;j++; // 原来值为0的洞现在为1后是不能往相邻的洞跳,故继续检查下一个洞}if (j == n - 1 && temp == 1) // 处理最后一个洞口值{checked[j] = 1;cnt++;}}}print(checked);}return flag;
}int main()
{int n, k; // n为洞的个数,k为检查的天数cin >> n >> k;vector <int> holeNums(k, 0); // holeNums为每天检查的洞的编号for (auto &m : holeNums)cin >> m;vector<int> checked(n, 1); // checked为每天检查的洞中是否有兔子,可能有兔子则值为1,// 一定没兔子则值为0,全部初始化为1;cout << "----------------" << endl;print(checked);bool flag = canCatchRibbit(holeNums, checked);if (!flag)cout << "Yes" << endl;elsecout << "No" << endl;return 0;
}
运行结果如下:
2019深信服笔试 —— 猎人抓兔子相关推荐
- sdn 深信服_推动物联网安全行业发展,青莲云受邀出席2019深信服创新大会
近日,以"畅想"为主题的2019深信服创新大会在深圳举办,本次大会由深信服科技.IDC 联合主办,是一场围绕着数字化创新技术的IT盛会,2000余位各行业IT管理者和深信服的合作伙 ...
- 猎人抓兔子 - (广度优先算法)
题目描述: 假设有一只兔子,有4个排成一排的洞,编号为1和4.兔子每天晚上跳到相邻的一个洞里住,2号洞可以跳1号和3号洞,4号洞只能跳3号洞.而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编 ...
- 2019深信服校招——木板接水
2019深信服校招--木板接水 题目描述 空地上竖立着n个从左到右排列的木板,它们可以把水挡住,但溢出最边上木板的水将会流到空地上.已知木板间距都是单位1,现给定每个木板的高度,请求出总共能接住的水量 ...
- 深信服笔试题 php,2019深信服校招笔试题------木板接水
2019深信服校招笔试题--木板接水 题目: 空地上竖立着n个从左到右排列的木板,它们可以把水挡住,但溢出最边上木板的水将会流到空地上.已知木板间距都是单位1,现给定每个木板的高度,请求出总共能接住的 ...
- 网络工程师面试经验分享_深信服笔试面试问答总结-有一定深度!完整版「建议收藏」
笔试题目: 笔试题目中有单选.多选.分析题和综合题.单选.多选都属于比较基础的题目,什么OSI参考模型,什么UDP传输方式,什么TCP要几次握手啊,什么传输文件用什么协议啊. 基础又简单的题目,有点网 ...
- 2020春招深信服笔试面试经验
记录自己人生的第一个offer.本人北交通信工程渣渣,因为不喜欢通信,所以应聘的都是编程岗位. 下面记录的是2020年春招深信服的一些经过. 深信服大致春招流程:网申--简历筛选--笔试--技术一面- ...
- 2018深信服笔试-抓兔子 DP
第一反应是枚举兔子起点+DFS,不过同学说过不了. dp的思路是:第i天第j个洞是否可能存在兔子,当天被访问的洞标位0,其余能到的洞为1,最后一天如果全是0的就一定能捉到 dp[i][j]==1 == ...
- 猎人抓兔子的bfs搜索解法
有五个山洞,一字排开,一只兔子住在某个洞,每天晚上会换住到相邻的洞中,一个猎人只能每天早上去一个洞,问怎样的检查序列能确保抓到兔子. 这个问题,可以说是一个智力题了,当然我的智力没有达标,所以没有想出 ...
- 9.10 深信服笔试记录
笔试有填空题和选择题,分值不多,但是第一次做这种还是有点意思的. 大多数题目记不清了(下午的时候忘记记录了),就记录几个值得注意的点吧. 结构体struct的对齐问题 小白鼠试毒问题(我当时并没有想清 ...
最新文章
- 基于SpringBoot的乡村医生诊疗系统的设计与实现
- 操作系统识别工具 xprobe2 p0f 简介
- python调用gitlab api自动合并分支_Python3 如何使用 GitLab API 进行批量的合并分支
- CSAPP第7章家庭作业参考答案
- 数据库-优化-数据库系统配置优化-配置文件优化
- CodeForces - 1301C Ayoub's function(数学)
- Arch Linux 没有声音:Intel sound card snd_hda_intel not working 解决方法
- Spork: Pig on Spark实现分析
- JDK源码解析之 java.lang.Error
- java 数据库外键查询_oracle中查询所有外键引用到某张表的记录
- java类 家族成员 姓氏_中国史上十大家族,占据中国九大姓,看看有没有你的姓氏...
- oracle查询访问记录,oracle 访问 记录
- python干货分享/网址总结
- html5 css3思维导图,手把手整理CSS3知识汇总【思维导图】
- 为云服务器(VPS)增加一个站点支持
- 解决 hadoop 2.x 配置 yarn 运行任务 Running job 卡住
- 715. Range Module
- 安卓模仿微信通讯录--RecyclerView+SideBar
- 【收藏】新年和圣诞祝词大全
- 帝国理工学院计算机专业排名,帝国理工学院专业排名一览及最强专业推荐(上交世界排名)...