蓝桥杯:跳蚂蚱【BFS】【Python】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示: 有 9 只盘子,排成 1 个圆圈。 其中 88 只盘子内装着 8 只蚱蜢,有一个是空盘。 我们把这些蚱蜢顺时针编号为 1 ~ 8。
每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。
请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列, 并且保持空盘的位置不变(也就是 1-8换位,2-7换位,...),至少要经过多少次跳跃?
这道题可以当成八数码类型的题来看,把整个圆盘拆解就是“012345678”,要变换成“087654321”,典型的八数码问题。
使用空圆盘来跳,一共有四种跳法:往前跳1,跳2和往后跳1,跳2,只要把每次跳的位置与圆盘交换位置,再比较是否到达终点便可求解这道题
代码实现
import collections
def bfs():q = collections.deque()dist = {} #使用字典存储步数dist[s1] = 0dire = [-2,-1,1,2]q.append(s1)while q:now = list(q.popleft()) #将pop出来的字符串逐个加入列表,方便操作if "".join(now) == s2:return dist["".join(now)] #如果达到要求,返回次数point = now.index("0") #找到移动“0”的索引distance = dist["".join(now)] #记录当前步数for i in dire:new_now = now.copy() num_index = (point + i + 9) % 9 #需要移动数的位置new_now[point],new_now[num_index] = new_now[num_index],new_now[point] #交换if "".join(new_now) not in dist.keys(): #如果没记录过便加入dist.setdefault("".join(new_now),distance+1)q.append("".join(new_now))s1 = "012345678"
s2 = "087654321"
print(bfs())
蓝桥杯:跳蚂蚱【BFS】【Python】相关推荐
- 蓝桥杯.跳蚱蜢(BFS)
Question: Result: 20 Solve: BFS板子题,跟POJ的八数码如出一辙,因为是填空题,超时也不怕,输出结果就行,也就没必要双向搜索,单向是绝对会超时的 注意点: 将状态存为st ...
- 第十一届蓝桥杯青少组Python竞赛真题
第十一届蓝桥省赛Python组复盘 第十一届蓝桥省赛Python组复盘_哔哩哔哩_bilibili 蓝桥杯青少组Python竞赛真题讲解 蓝桥杯青少组Python竞赛真题讲解_哔哩哔哩_bilibil ...
- [蓝桥杯]横向打印二叉树 Python满分解法
[蓝桥杯]横向打印二叉树 Python满分解法 #树的结点类定义 class Node:def __init__(self,left=0,right=0,w=0,line=0,leng=0):self ...
- 蓝桥杯 蓝肽子序列 python(2020动态规划)
蓝桥杯 蓝肽子序列 python(2020动态规划) 题目描述 L 星球上的生物由蛋蓝质组成,每一种蛋蓝质由一类称为蓝肽的物资首尾连接成一条长链后折叠而成. 生物学家小乔正在研究 L 星球上的蛋蓝质. ...
- 蓝桥杯-幸运数(python)
蓝桥杯-幸运数(python) 一.题目 时间限制: 1Sec 内存限制: 128MB 题目描述: 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1 ...
- 蓝桥杯 ALGO-1005 数字游戏 python
蓝桥杯 ALGO-1005 数字游戏 python 试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到 ...
- 【蓝桥杯】承压计算python实现
[蓝桥杯]承压计算python实现 笔者第一次写博客,如有错误,欢迎指正. 原题如下: X 星球的高科技实验室中整齐地堆放着某批珍贵金属原料.每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被 ...
- 2022年(第13届蓝桥杯省赛)Python 14 天夺奖冲刺营
2022年(第13届蓝桥杯省赛)Python 14 天夺奖冲刺营 2022.03.25 攒了一周的视频直播没有看,更新完了直接看合集. 数据结构基础之链表篇 什么是链表 链表是线性表的链式存取的数据结 ...
- ACWING蓝桥杯每日一题python
ACWing蓝桥杯每日一题 一直没时间去总结算法,终于有空可以总结一下刷的acwing了,因为没时间所以最近只刷了ACWING的蓝桥杯每日一题...真是该死 1.截断数组 首先我们要知道,如果sum( ...
- 【蓝桥杯考前一天总结PYthon终结篇】
最短路之Floyd: 适用领域:既可以是有向图也可以是无向图,权重可以为负,通常用来求各顶点之间的距离(多源) 缺点就是时间复杂度高,加上Python本身跑得慢....就祈祷这次题数据量不要太大 优点 ...
最新文章
- 联手中科大、浙大、华科大等高校,阿里研发4项最新AI安全技术
- Grub error17:Cannot mount selected partition启动错误的解决
- linux (fedora ubuntu centos) thunderbird雷鸟配置腾讯企业邮箱
- react的详细知识讲解!
- Mybatis构建sql语法
- php工具箱mysql停止进程_PHP进程卡死和MySQL超时时间的设置方法
- C++编译器与链接器工作原理
- php 获取父类名称,[typecho]获取 父级分类 名称?
- android SpannableString使用详解
- 地理空间数据下载 积累
- 学习:Ubuntu14.04编译caffe问题记录
- 安装DevExpress后如何在工具箱显示Dev控件
- 打开Word文档的时候提示mathtype “安全警告 宏已被禁用”
- 机器学习算法的要点(附 Python 和 R 代码)
- 高级算法梳理之LightGBM
- (SQL语句)查询条件模糊匹配若干字段
- supervisord如何优雅的新加服务
- LoRa 凭什么传的远、信噪比高、误码率低?
- html5 游戏广告 sdk,帷千动媒SDK 3.0发布 基于HTML5富媒体广告
- ICMP详解和实例分析
热门文章
- asp.net(c#)中IsPostBack是什么意思
- C++统计一个文件的行数,大写字母数,小写字母数,数字数
- 系统试运行报告是谁写的_深圳个人信用报告查询系统入口https://ipcrs.pbccrc.org.cn/...
- 图书管理系统(归还书籍)
- 时间管理经典书籍-《番茄工作法图解》
- 完全用Linux工作--你还在用老掉牙的windows吗?
- 金融牌照之基金销售、基金支付、基金管理牌照简析
- 每日一学33——Unity点击UGUI按钮后,再按空格键会自动触发按钮
- Springboot中@autowired和@resource注解的区别
- jquery显示、隐藏div