青蛙跳杯子

原题链接:问题 1878: [蓝桥杯][2017年第八届真题]青蛙跳杯子
解题思路:将问题简单转化为青蛙和*的换位,使用BFS搜索即可,为避免重复状态使用map存储,可以在O(1)判重

import java.util.*;
public class Main {static class Fron {String now;int step;int pos;Fron(String now, int step, int pos) {this.now = now;this.pos = pos;this.step = step;}}static String start, end;static Queue<Fron> q = new ArrayDeque<Fron>();static Map<String, Integer> m = new HashMap<String, Integer>();static int[] dir = {-3, -2, -1, 1, 2, 3};public static void main(String[] args) {Scanner sc = new Scanner(System.in);start = sc.nextLine();end = sc.nextLine();int pos = 0;for (int i = 0; i < start.length(); i++) {if ('*' == start.charAt(i)) {pos = i;break;}}System.out.println(bfs(start, 0, pos));sc.close();}private static int bfs(String now, int step, int pos) {Fron f = new Fron(now, step, pos);q.offer(f);while (!q.isEmpty()) {Fron status = q.poll();if (status.now.equals(end)) {return status.step;}if (m.containsKey(status.now)) {continue;//重复状态剪枝} else {m.put(status.now, 1);//非重复状态存储}for (int i = 0; i < 6; i++) {//搜寻六种跳法,即空位的6种交换int ind = status.pos + dir[i];//交换后的位置if (ind > -1 && ind < start.length()) {String temp = swap(status.pos, ind, status.now);//交换后的状态Fron fNext = new Fron(temp, status.step + 1, ind);if (!m.containsKey(temp)) {//重复状态剪枝q.offer(fNext);}}}}return -1;}private static String swap(int pos, int ind, String now) {char[] c = now.toCharArray();char temp = c[pos];c[pos] = c[ind];c[ind] = temp;return new String(c);}}

蓝桥杯练习:青蛙跳杯子相关推荐

  1. 【蓝桥杯】历届试题 青蛙跳杯子(广度优先搜索bfs)(C++)

    [蓝桥杯]历届试题 青蛙跳杯子 问题描述 思路分析 代码实现 问题描述 题目链接:青蛙跳杯子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 X星球的流行宠物是青蛙,一般有两种颜色: ...

  2. 第八届蓝桥杯省赛——青蛙跳杯子

    第八届蓝桥杯省赛--青蛙跳杯子 题目描述 XXX 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. XXX 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的 ...

  3. 蓝桥杯——九宫重排、青蛙跳杯子

    1.历届试题 九宫重排   时间限制:1.0s   内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中 ...

  4. 【蓝桥杯】历届试题 青蛙跳杯子(广度优先搜索bfs)

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

  5. Java实现第八届蓝桥杯青蛙跳杯子

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

  6. 青蛙跳杯子(蓝桥杯)

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

  7. 蓝桥杯真题之青蛙跳杯子

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

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

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

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

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

最新文章

  1. python整数类型进制表示_Python二进制、八进制、十六进制数字的表示和转换
  2. xray 被动_长亭xray:一款自动化Web漏洞扫描神器(免费社区版)
  3. spring启动过程之源码跟踪(续beanfactory)--spring Debug
  4. Codeforces Round #482 (Div. 2)
  5. python输出日志到文件_【已解决】Python中,如何让多个py文件的logging输出到同一个日志log文件...
  6. vegas9.0合成计时器
  7. 使用PS创造非凡动物形象
  8. 桌面APP打包利器 —— Node-webkit
  9. 【Excel实战】按指定字符拆分字符串
  10. MATLAB关系运算符和逻辑运算符
  11. 离散中多重组合是指_大学离散数学复习试题
  12. Java 分布式面试题集合
  13. 如何关闭/屏蔽百度搜索结果的置顶广告?(无耻的百度关了又自己开启)
  14. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学专业怎么样?
  15. linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT
  16. 第五章:物理与环境安全技术
  17. phpstudy集成环境或apache环境下 php 获取不到Authorization
  18. python编程要懂英语吗_学习编程必须要会英语吗?
  19. [USACO08DEC]在农场万圣节Trick or Treat on the Farm【Tarja缩点+dfs】
  20. [转]浅谈协方差矩阵

热门文章

  1. 使用python暴力破解zip压缩包的密码
  2. 大数据时代的知识图谱
  3. 蓝牙测试参数说明--学习记录
  4. python读取水印_阿里水印的Python实现
  5. 论面向服务架构设计及其应用
  6. 吊死人小游戏 2.0版本
  7. 计算机视觉学习8:照相机模型与增强现实
  8. onenote CAS总结⑦:异常“强大”的搜索机制(转载)
  9. java fixflow流程设计_Fixflow引擎解析(一)(介绍) - Fixflow开源流程引擎介绍
  10. 人人网相册漏洞:非好友可查看隐私相册