有五个山洞,一字排开,一只兔子住在某个洞,每天晚上会换住到相邻的洞中,一个猎人只能每天上去一个洞,问怎样的检查序列能确保抓到兔子。


这个问题,可以说是一个智力题了,当然我的智力没有达标,所以没有想出来。

所以我打算写一段代码找出一个可以实现的序列,来减少我脑细胞的消耗。

要找出一个序列,当然市越短越好了,所以我运用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搜索解法相关推荐

  1. 猎人抓兔子 - (广度优先算法)

    题目描述: 假设有一只兔子,有4个排成一排的洞,编号为1和4.兔子每天晚上跳到相邻的一个洞里住,2号洞可以跳1号和3号洞,4号洞只能跳3号洞.而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编 ...

  2. 2019深信服笔试 —— 猎人抓兔子

    2019深信服笔试 -- 猎人抓兔子 题目描述: 假设兔子有n个排成一排的洞,编号为1和n.兔子每天晚上跳到相邻的一个洞里住,而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编号,希望你分析一 ...

  3. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23822  Solved: 6012 [Submit ...

  4. BZOJ1001[BeiJing2006]狼抓兔子——最小割

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  5. 1001. [BJOI2006]狼抓兔子【最小割】

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  6. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  7. bzoj 1001: [BeiJing2006]狼抓兔子

    Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 21007  Solved: 5251 [Submit][Status][Discuss] Descr ...

  8. 1001: [BeiJing2006]狼抓兔子

    /**************************************************************Problem: 1001User: whymheLanguage: C+ ...

  9. 【BZOJ - 1001】狼抓兔子(无向图网络流,最小割,或平面图转对偶图求最短路SPFA)

    题干: 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

最新文章

  1. NC:遗传发育所Speakman组-棕色脂肪是无菌小鼠改善血糖的关键
  2. win7下安装docker
  3. Windows Phone 7 位图编程
  4. LeetCode最大子序和 (动态规划)python
  5. 什么是设计模式(Design Patterns)
  6. Openresty (nginx + lua)
  7. 前端如何设置背景颜色的透明度 css中的 rgba() 函数详解 :background-color: rgba(255,192,203,0.3)
  8. C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
  9. flink 异步io mysql 缓存_Flink用于外部数据访问的异步I/O
  10. Atitit.css 规范 bem 项目中 CSS 的组织和管理
  11. PPT出图修改dpi
  12. 毕向东java ppt下载_毕向东Java基础ppt课件
  13. 【教程】小米盒子4 刷机,无广告,总是无限重启,刷入2%报错的解决方法
  14. dBm、dBW和W转换
  15. php集成腾讯云im
  16. mysql etimedout_Node.js MySQL ETIMEDOUT error
  17. Amazon软件开发工程师面试题
  18. html5 js获取设备信息,js怎么获取电脑硬件信息
  19. 身份证号码编码规则及校验位校验算法
  20. itunes未能连接到iphone软件更新服务器,无法联系iphone软件更新服务器,itunes无法联系iphone软件更新服务器解决方法...

热门文章

  1. 设备巡检二维码制作教程
  2. Go语言——快速使用Markdown解析库
  3. php yanzhengm,php登录验证_php用户登录与验证的代码举例
  4. 进程 线程 协程 详细讲解
  5. 计算机考博复试基础知识,2017考博复试经验 - 考博 -丁香园论坛
  6. 深圳python编程培训
  7. 【海思恢复生产SS928V100 超高清智能网络录像机 SoC 】
  8. 学习日记day38 平面设计 字体设计
  9. 谈谈解码器 ---(作者:叶立, 出处不详)
  10. 工业4.0时代,中国制造业将会走向何方?