蓝桥杯练习:青蛙跳杯子
青蛙跳杯子
原题链接:问题 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);}}
蓝桥杯练习:青蛙跳杯子相关推荐
- 【蓝桥杯】历届试题 青蛙跳杯子(广度优先搜索bfs)(C++)
[蓝桥杯]历届试题 青蛙跳杯子 问题描述 思路分析 代码实现 问题描述 题目链接:青蛙跳杯子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 X星球的流行宠物是青蛙,一般有两种颜色: ...
- 第八届蓝桥杯省赛——青蛙跳杯子
第八届蓝桥杯省赛--青蛙跳杯子 题目描述 XXX 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. XXX 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的 ...
- 蓝桥杯——九宫重排、青蛙跳杯子
1.历届试题 九宫重排 时间限制:1.0s 内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中 ...
- 【蓝桥杯】历届试题 青蛙跳杯子(广度优先搜索bfs)
历届试题 青蛙跳杯子 问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯 ...
- Java实现第八届蓝桥杯青蛙跳杯子
青蛙跳杯子 题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色.X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去.如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有 ...
- 青蛙跳杯子(蓝桥杯)
青蛙跳杯子 题目描述 XX 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. XX 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子 ...
- 蓝桥杯真题之青蛙跳杯子
问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...
- [蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组
解题思路: 这题如果我们考虑蚱蜢跳,有很多蚱蜢,有很多情况,所以我们让空盘跳,这样就简化题目了,然后我们化圆为直,将题目的情况看成字符串012345678,最后要变成087654321,这样题目就变得 ...
- 跳蚱蜢,青蛙跳杯子(python)
文章目录 跳蚱蜢 分析 运行代码 通过截图 青蛙跳杯子 分析 运行代码 通过截图 跳蚱蜢 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可.如下图所示: 有 9 只盘子 ...
最新文章
- python整数类型进制表示_Python二进制、八进制、十六进制数字的表示和转换
- xray 被动_长亭xray:一款自动化Web漏洞扫描神器(免费社区版)
- spring启动过程之源码跟踪(续beanfactory)--spring Debug
- Codeforces Round #482 (Div. 2)
- python输出日志到文件_【已解决】Python中,如何让多个py文件的logging输出到同一个日志log文件...
- vegas9.0合成计时器
- 使用PS创造非凡动物形象
- 桌面APP打包利器 —— Node-webkit
- 【Excel实战】按指定字符拆分字符串
- MATLAB关系运算符和逻辑运算符
- 离散中多重组合是指_大学离散数学复习试题
- Java 分布式面试题集合
- 如何关闭/屏蔽百度搜索结果的置顶广告?(无耻的百度关了又自己开启)
- 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学专业怎么样?
- linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT
- 第五章:物理与环境安全技术
- phpstudy集成环境或apache环境下 php 获取不到Authorization
- python编程要懂英语吗_学习编程必须要会英语吗?
- [USACO08DEC]在农场万圣节Trick or Treat on the Farm【Tarja缩点+dfs】
- [转]浅谈协方差矩阵