文章目录

  • 跳蚱蜢
    • 分析
    • 运行代码
      • 通过截图
  • 青蛙跳杯子
    • 分析
    • 运行代码
      • 通过截图

跳蚱蜢

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。如下图所示: 有 9 只盘子,排成 1 个圆圈。 其中 8 只盘子内装着 8 只蚱蜢,有一个是空盘。 我们把这些蚱蜢顺时针编号为 1 ~ 8。

每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列, 并且保持空盘的位置不变(也就是 1-8换位,2-7换位,...),至少要经过多少次跳跃?运行限制
最大运行时间:1s
最大运行内存: 128M

分析

  • 一般这种至少,求最小值的问题很适合利用bfs求解
  • 首先我们对每个盘子进行编号,由于题目已经编号完毕,那么我们只要设空盘子为0即可。那么我先将这个圆圈顺时针拉直(拉成直线),那么这时候初试状态应该为012345678,所以依照题意(空盘位置不变,换成逆时针排列),那么这时候最终状态应该为876543210
  • 可能有人会说一个圈变成线,某些特性会丧失。但我们这里可以采取一种方法弥补这种丧失特性(位置变化采取取余的方式)
  • 为减少计算量,我们通常会用一个vis列表记录之前存放过的数据,以达到有些重复的状态不计算(相当于剪枝)
  • 而且,我们求解问题的过程应该略微转化,如果考虑的是蚱蜢跳到盘子,如1-0互换,2-0互换…,需要考虑较多种情况,那么我们只要考虑盘子的变化即可。

运行代码

from collections import dequedef in_queue(t,dic):old_pos = t[1] # 之前盘子的位置new_pos = (old_pos+dic+9)%9 # 避免负数old_queue = t[0]# 队列交换过程new_queue = list(old_queue)new_queue[old_pos],new_queue[new_pos] = new_queue[new_pos],new_queue[old_pos]new = "".join(new_queue)if new not in vis:q.append((new,new_pos,t[2]+1))vis.add(new)q = deque()
q.append(('012345678', 0, 0))# 当前队列,盘子当前位置,变化次数
vis = set() # 去重
vis.add('012345678')
while q:t = q.popleft() # 经典弹出if t[0] == '876543210':print(t[2])breakin_queue(t,1)in_queue(t,2)in_queue(t,-1)in_queue(t,-2)

通过截图

青蛙跳杯子

题目描述
X 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。X 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。*WWWBBB
其中,W 字母表示白色青蛙,B 表示黑色青蛙,∗ 表示空杯子。X 星的青蛙很有些癖好,它们只做 3 个动作之一:跳到相邻的空杯子里。隔着 1 只其它的青蛙(随便什么颜色)跳到空杯子里。隔着 2 只其它的青蛙(随便什么颜色)跳到空杯子里。对于上图的局面,只要 1 步,就可跳成下图局面:WWW*BBB
本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。输入描述
输入为 2 行,2 个串,表示初始局面和目标局面。我们约定,输入的串的长度不超过 15。输出描述
输出要求为一个整数,表示至少需要多少步的青蛙跳。输入输出样例
示例
输入
*WWBB
WWBB*输出
2运行限制
最大运行时间:1s
最大运行内存: 256M

分析

  • 如果仔细发现的话,应该知道这题与上面那题同一个类型
  • 唯一不同的是刚才是环,现在是线性的情况。
  • 基本与刚才一致啦,但这里要注意:线性要判断越界问题,越界直接减掉即可,以及刚才空杯的位置是固定的,现在这个*位置并不固定,所以还要找到*的位置

运行代码

from collections import dequedef in_queue(t,dic):old_pos = t[1] # 之前空杯的位置if t[1] + dic < 0 or t[1] + dic >= l:returnnew_pos = t[1]+dicold_queue = t[0]# 队列交换过程new_queue = list(old_queue)new_queue[old_pos],new_queue[new_pos] = new_queue[new_pos],new_queue[old_pos]new = "".join(new_queue)if new not in vis:q.append((new,new_pos,t[2]+1))vis.add(new)s1 = input()
s2 = input()
l = len(s1)
pos = s1.index('*')
q = deque()
q.append((s1, pos, 0))# 当前队列,*当前位置,变化次数
vis = set() # 去重
vis.add(s1)
while q:t = q.popleft() # 经典弹出if t[0] == s2:print(t[2])breakin_queue(t,1)in_queue(t,2)in_queue(t,3)in_queue(t,-1)in_queue(t,-2)in_queue(t,-3)

通过截图

如有错误,敬请指正,欢迎交流,谢谢♪(・ω・)ノ

跳蚱蜢,青蛙跳杯子(python)相关推荐

  1. Java小青蛙跳台街,青蛙跳台阶问题:Java版,递归算法和循环

    青蛙跳台阶 青蛙跳台阶,青蛙每一次可以跳1阶或2阶,假设有n阶台阶,青蛙要跳完所有台阶,有多少种跳法? 引入斐波那契数列 对于斐波那契数列,百度百科是这么解释的: 斐波那契数列(Fibonacci s ...

  2. 青铜三人行之青蛙跳台阶

    先说一个消息,为了方便互相交流学习,青铜三人行建了个微信群,感兴趣的伙伴可以扫码加下面的小助手抱你入群哦! 青蛙跳台阶问题 青铜三人行--每周一题@青蛙跳台阶 青蛙跳台阶问题 一只青蛙一次可以跳上1级 ...

  3. 面试算法-青蛙跳台阶问题(JAVA实现)

    题干 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个 n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 数据范围:0<= n <=40 要求:时间复杂度:O(n) ...

  4. 买卖股票最佳时机+青蛙跳楼梯

    1.买卖股票最佳时机 数组 numbers: [1,2,6,3,4] 想求的最佳买卖时机,暴力解法,可以使用for循环,循环两次,查看最大差值 较优方案:动态规划 初始化一个Min值和一个Max值,m ...

  5. C语言 - 递归之青蛙跳台阶详解(这货就是个斐波那契数列)

    什么是青蛙跳台阶问题? 一只青蛙可以一次跳 1 级台阶或一次跳 2 级台阶,如果台阶数为n,那么这只青蛙有多少种跳法? 电影<少年班>中有这样一个片段,导师周知庸寻找智力超群的少年时遇到了 ...

  6. 蓝桥杯真题——青蛙跳杯子

    题目描述 XX 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. XX 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一daim个是空着的,右边的杯子,每 ...

  7. 2017蓝桥杯省赛---java---C---9(青蛙跳杯子)

    题目描述 题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色.X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去.如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一 ...

  8. python 爱英斯坦台阶问题_关于Python青蛙跳台阶的问题详细讲解

    Python青蛙跳台阶的问题 问题: 一只青蛙要跳上n层高的台阶,一次能跳一阶,也可以跳2阶,请问这只青蛙跳上n层高的台阶有多少种跳法? 背景知识点补充(了解) 斐波那契数列 斐波那契数列(Fibon ...

  9. 试题 历届试题 青蛙跳杯子

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排 ...

最新文章

  1. python属性和局部变量_python类与对象1
  2. 明略科技完成2亿美元E+轮融资,中俄投资基金领投,腾讯、弘卓资本等跟投
  3. AutoCloseable的用法
  4. 图像处理之双线性插值原理和实现
  5. Oracle 监听配置详解(转载)
  6. expect巡检服务器_Shell-批量巡检服务器脚本
  7. 面试问题:SpringMVC的执行流程
  8. 栈空间不够会报错吗_c++如何解决大数组栈内存不够的问题
  9. 最小堆实现优先队列:Python实现
  10. DL-C_1_week_1_1
  11. Chromeedge好用扩展插件分享
  12. 神是什么?神即道 道法自然 如来 ---《天道》王志文饰丁元英 左小青饰芮小丹
  13. 计算机内存条价格,最新内存条天梯图2020 内存条全面选购指南
  14. 【SSD目标检测】2:如何制作自己的数据集
  15. MFC建立简单绘图板
  16. SuperMap iClient3D for WebGL教程(特效)- 平行光源
  17. 随机梯度下降的动量法 Momentum
  18. 云创大数据应邀在2020英特尔数据创新峰会进行方案分享
  19. APP手机应用程序软件UI设计界面介绍AE模板
  20. 2015年12月英语总结

热门文章

  1. 【微信小程序】使用自定义字体
  2. 手机有NFC模拟卡的功能,原因有哪些呢?
  3. IHE测试系列之一:胜利归来
  4. 修改远程桌面端口号.bat
  5. 《杜月笙发迹秘史》书摘
  6. mbio期刊拒稿率_为什么第一篇SCI这么难中,投了两个期刊都说不适合拒我啊 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  7. 【DP】序列 题解
  8. 树莓派之禁用自动黑屏休眠模式
  9. nodemon启动报错
  10. 创业第14天, 开始设计竞价助手的新功能