猎人抓兔子的bfs搜索解法
有五个山洞,一字排开,一只兔子住在某个洞,每天晚上会换住到相邻的洞中,一个猎人只能每天早上去一个洞,问怎样的检查序列能确保抓到兔子。
这个问题,可以说是一个智力题了,当然我的智力没有达标,所以没有想出来。
所以我打算写一段代码找出一个可以实现的序列,来减少我脑细胞的消耗。
要找出一个序列,当然市越短越好了,所以我运用bfs的搜索方法来记录当天检查的洞,兔子可能的藏身之洞以及之前检查的洞。
代码有注释,我就不bb了。
#coding:utf-8
'''
n为当天晚上要查看的洞
list1为肯能是兔子藏身的洞的集合
set2为当查看n后,没有抓到兔子,兔子可能藏身的集合
'''
def getNewSet(n,list1):set2 = set()for i in list1:if i+1 != n and i+1<=5:set2.add(i+1)if i-1 != n and i-1>=1:set2.add(i-1)return set2import Queue
if __name__== '__main__':'''bfs进行搜索,首先将初始情况加入队列,1.当队列部不空时:2.如果已经得到了结果,那就结束,跳转到(7.)3.取出队列的第一个值4.分别检查5个洞,5.如果检查之后兔子的藏身洞变少,那就将这个洞加入到队列中;6.如果检查后兔子没有藏身之处,则已经找到结果将结果赋值给ans同时设置已找到结果标志,并跳出循环7.输出最后记录的结果8.根据得到的结果,找出每一步后兔子藏身之处'''Q = Queue.Queue()# for i in range(1,6):Q.put((0,set([1,2,3,4,5]),[]))rn = 0ans = []# 1.while not Q.empty() :# 2.if rn == 1:break# 3.n,set1,list1 = Q.get()# 4.for i in range(1,6):tlist = list1[:]set2 = getNewSet(i,set1)# 5.if len(set1)>=len(set2):tlist.append(n)# print set1,i, set2,tlistQ.put((i,set2,tlist))# 6.if not set2:tlist.append(i)ans = tlistrn = 1break# 7.print ans# 8.set3 = set([1,2,3,4,5])for i in ans[1:]:set3 = getNewSet(i,set3)print i,set3
猎人抓兔子的bfs搜索解法相关推荐
- 猎人抓兔子 - (广度优先算法)
题目描述: 假设有一只兔子,有4个排成一排的洞,编号为1和4.兔子每天晚上跳到相邻的一个洞里住,2号洞可以跳1号和3号洞,4号洞只能跳3号洞.而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编 ...
- 2019深信服笔试 —— 猎人抓兔子
2019深信服笔试 -- 猎人抓兔子 题目描述: 假设兔子有n个排成一排的洞,编号为1和n.兔子每天晚上跳到相邻的一个洞里住,而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编号,希望你分析一 ...
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 23822 Solved: 6012 [Submit ...
- BZOJ1001[BeiJing2006]狼抓兔子——最小割
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- 1001. [BJOI2006]狼抓兔子【最小割】
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- bzoj 1001: [BeiJing2006]狼抓兔子
Time Limit: 15 Sec Memory Limit: 162 MB Submit: 21007 Solved: 5251 [Submit][Status][Discuss] Descr ...
- 1001: [BeiJing2006]狼抓兔子
/**************************************************************Problem: 1001User: whymheLanguage: C+ ...
- 【BZOJ - 1001】狼抓兔子(无向图网络流,最小割,或平面图转对偶图求最短路SPFA)
题干: 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
最新文章
- NC:遗传发育所Speakman组-棕色脂肪是无菌小鼠改善血糖的关键
- win7下安装docker
- Windows Phone 7 位图编程
- LeetCode最大子序和 (动态规划)python
- 什么是设计模式(Design Patterns)
- Openresty (nginx + lua)
- 前端如何设置背景颜色的透明度 css中的 rgba() 函数详解 :background-color: rgba(255,192,203,0.3)
- C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
- flink 异步io mysql 缓存_Flink用于外部数据访问的异步I/O
- Atitit.css 规范 bem 项目中 CSS 的组织和管理
- PPT出图修改dpi
- 毕向东java ppt下载_毕向东Java基础ppt课件
- 【教程】小米盒子4 刷机,无广告,总是无限重启,刷入2%报错的解决方法
- dBm、dBW和W转换
- php集成腾讯云im
- mysql etimedout_Node.js MySQL ETIMEDOUT error
- Amazon软件开发工程师面试题
- html5 js获取设备信息,js怎么获取电脑硬件信息
- 身份证号码编码规则及校验位校验算法
- itunes未能连接到iphone软件更新服务器,无法联系iphone软件更新服务器,itunes无法联系iphone软件更新服务器解决方法...