标题:跳蚱蜢

如图 p1.png 所示: 有9只盘子,排成1个圆圈。

其中8只盘子内装着8只蚱蜢,有一个是空盘。

我们把这些蚱蜢顺时针编号为 1~8。

每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。

请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,并且保持空盘的位置不变(也就是1-8换位,2-7换位,…),至少要经过多少次跳跃?

注意:要求提交的是一个整数,请不要填写任何多余内容或说明文字。

BFS

Python

from collections import dequedef bfs(arr):n, vis, queue = len(arr), dict(), deque()queue.append((arr, 0))while queue:front = queue.popleft()tmp, cnt = front# print(tmp, cnt)if tmp == "876543210":print(cnt)returnif vis.get(tmp, None):continuevis[tmp] = Trueidx, tmp = tmp.index("0"), list(tmp)for i in [-2, -1, 1, 2]:tmp[idx], tmp[(idx + i) % n] = tmp[(idx + i) % n], tmp[idx]val = ''.join(tmp)if not vis.get(val, None):queue.append((val, cnt + 1))tmp[idx], tmp[(idx + i) % n] = tmp[(idx + i) % n], tmp[idx]if __name__ == '__main__':"""[1, 2, 3, 4, 5, 6, 7, 8, 0] -> [8, 7, 6, 4, 4, 3, 2, 1, 0]"""sequence = "123456780"bfs(sequence)

2017/Province_C_C++_A/2/跳蚱蜢相关推荐

  1. 2017/Province_C_C++_A/7/正则问题

    题目 考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: x ...

  2. 蓝桥杯:BFS解决问题总结(九宫重排,跳蚱蜢,卡片交换)

    BFS标志: 初始状态经过演变到达目标状态,问最少经过几步 如九宫重排问题 跳蚱蜢问题: 卡片交换问题: 解题模板: 不同题目的move函数和move函数的个数不同,其他都是相同的 struct st ...

  3. 跳蚱蜢,青蛙跳杯子(python)

    文章目录 跳蚱蜢 分析 运行代码 通过截图 青蛙跳杯子 分析 运行代码 通过截图 跳蚱蜢 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可.如下图所示: 有 9 只盘子 ...

  4. [蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组

    解题思路: 这题如果我们考虑蚱蜢跳,有很多蚱蜢,有很多情况,所以我们让空盘跳,这样就简化题目了,然后我们化圆为直,将题目的情况看成字符串012345678,最后要变成087654321,这样题目就变得 ...

  5. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - B. 跳蚱蜢

    题目 如图所示: 有9只盘子,排成1个圆圈. 其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空 ...

  6. 蓝桥杯—第八届—A组—第二题—跳蚱蜢 {C语言}=====【可调试】

    如图 p1.png 所示:  有9只盘子,排成1个圆圈. 其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻 ...

  7. 2013\Province_C_C++_A\3.振兴中华

    小明参加了学校的趣味运动会,其中的一个项目是:跳格子. 地上画着一些格子,每个格子里写一个字,如下所示: 比赛时,先站在左上角的写着"从"字的格子里,可以横向或纵向跳到相邻的格子里 ...

  8. 2019/Province_C_C++_A/F/完全二叉树的权值

    完全二叉树的权值 Code Python if __name__ == '__main__':N = int(input())A = list(map(int, input().split()))cu ...

  9. 2019/Province_C_C++_A/D/迷宫

    [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中 ...

最新文章

  1. UVA11384正整数序列(把123..变成0的最小步数)
  2. 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他
  3. Java中传值与传地址
  4. 【语义分割】ICCV21_Mining Contextual Information Beyond Image for Semantic Segmentation
  5. lrtemplate如何导入pr_PR模板使用套路讲解 视频剪辑教程
  6. ApplicationContext 和 BeanFactory 的区别
  7. gpt windows linux,UEFI+GPT环境下安装Windows+Linux+OS X
  8. Freemarker中通过request获得contextPath
  9. 算法高级(25)-分布式TopN算法玄机
  10. Always On可用性组中SQL Server统计信息
  11. linux使用windows中编辑的文件,格式问题
  12. CSS ---- 隐藏滚动条
  13. 50多款51单片机程序源码原理图编程源代码
  14. webstorm主题配置
  15. 工商管理专业知识与实务(中级)【4】
  16. 数学表达式Round2
  17. 怎么让照片里的人嘴巴动起来_动嘴app最新版(让照片说话的软件)|动嘴app安卓版下载v1.0.0-乐游网安卓下载...
  18. 最新狂雨小说CmsV1.5.2漂亮的小说网站源码
  19. 2017年该到哪里买房?只需看这个指标!(GDP含税量、人均国税)
  20. 爆破的思路和断点的设置

热门文章

  1. C#Winform程序如何发布并自动升级(图解)
  2. 多线程在javaweb中的应用
  3. PHP基础知识--函数
  4. 计算机科学导论学习资料
  5. 无法访问请求的页面,因为该页的数据的相关配置数据无效
  6. java继承对象转换_java中类与对象的继承重写,存储以及自动转换和强制转换。...
  7. 算法设计棋盘覆盖问题c语言,棋盘覆盖问题(用分治法求解)
  8. Java黑皮书课后题第10章:10.3(MyInteger类)设计一个名为MyInteger的类
  9. Java黑皮书课后题第2章:2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数
  10. matlab system object,通过 System object 实现模块