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

题目描述

题目描述
X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。*WWWBBB其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。X星的青蛙很有些癖好,它们只做3个动作之一:1. 跳到相邻的空杯子里。2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里。3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里。对于上图的局面,只要1步,就可跳成下图局面:WWW*BBB本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。输入为2行,2个串,表示初始局面和目标局面。
输出要求为一个整数,表示至少需要多少步的青蛙跳。例如:
输入:
*WWBB
WWBB*则程序应该输出:
2再例如,
输入:
WWW*BBB
BBB*WWW则程序应该输出:
10我们约定,输入的串的长度不超过15资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。----------------------------笨笨有话说:我梦见自己是一棵大树,青蛙跳跃,我就发出新的枝条,春风拂动那第 5 层的新枝,哦,我已是枝繁叶茂。

思路分析

bfs

代码实现

package lanqiao;import java.util.*;public class Main {private static StringBuilder start;private static StringBuilder target;static Set<String> allState=new HashSet<String>();/*** 封装一个持有状态和层次的类*/private static class StateAndLevel{StringBuilder state;int level;int pos;//空杯子的位置public StateAndLevel(StringBuilder state, int level,int pos) {this.state = state;this.level = level;//走的步数this.pos=pos;}@Overridepublic int hashCode() {return state!=null?state.hashCode():0;}@Overridepublic boolean equals(Object o) {if(this==o) return true;if(o==null||getClass()!=o.getClass()) return false;StateAndLevel thar = (StateAndLevel) o;return state!=null?state.toString().equals(thar.state.toString()):thar.state==null;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);start = new StringBuilder(scanner.nextLine());target = new StringBuilder(scanner.nextLine());bfs();}private static void bfs() {/*初始状态加入队列*/Queue<StateAndLevel> q=new LinkedList<>();q.add(new StateAndLevel(start, 0, start.indexOf("*")));allState.add(start.toString());/*不定的弹出对手,一步烟花成相邻状态,加入队列(判重)*/while (!q.isEmpty()){StateAndLevel front = q.poll();StringBuilder state = front.state;int level = front.level;//和 目标值作比较if (state.toString().equals(target.toString())){System.out.println(level);break;}int pos = front.pos;//可以演化出若干种相邻的状态for (int i = -3; i <= 3; i++) {if(i==0) continue;if(pos+i>=0&&pos+i<state.length()){StringBuilder new_state = new StringBuilder(state);swap(new_state,pos,pos+i);//交换达到新状态if (!allState.contains(new_state)){q.add(new StateAndLevel(new_state, level + 1, pos + i));allState.add(new_state.toString());//放入set}}}}}public static void swap(StringBuilder a,int i,int j){char t=a.charAt(i);a.setCharAt(i,a.charAt(j));a.setCharAt(j,t);}}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

青客宝团队redis内部分享ppt

Redis&#xff1a;最好的缓存数据库 说Redis是缓存服务&#xff0c;估计有些人会不开心&#xff0c;因为Redis也可以把数据库持久化&#xff0c;但是在大多数情况Redis的竞争力是提供缓存服务。说到缓存服务必然会想到Memcached&#xff0c;因为几年前Memcached是最流行的缓存服…

你知道面试官是如何刷人的吗

转载自 你知道面试官是如何刷人的吗 对于一个公司来说&#xff0c;执行招聘面试事宜是一个耗时耗钱的项目&#xff0c;从顾问公司和人才中介挑选出合适的简历之后&#xff0c;还要花更多的时间找出合适的候选人。有的时候这些机构会向你保证这些人都是 Java 天才、SQL 专家、…

jQuery动画与事件概念以及语法

一、鼠标单击事件&#xff1a; 语法&#xff1a;KaTeX parse error: Expected EOF, got # at position 3: ("#̲div1").click(fu…("#div1").mouseover(function(){//代码}); 三、鼠标移出事件&#xff1a; 语法&#xff1a;KaTeX parse error: Expected E…

spark submit参数及调优

spark submit参数及调优 原文地址 spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数。 使用格式: ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ …

2020蓝桥杯省赛---java---A---4(七段码)

题目描述 思路分析 代码实现 package lanqiao;public class Main {public static int N10;public static int e[][]new int[N][N];//存储二极管相邻的信息public static int f[]new int[N];//并查集public static int ans0;public static boolean st[]new boolean[N];//true表…

小米无线路由器服务器用户名和密码忘了,小米路由器管理密码忘记了怎么办?...

问&#xff1a;小米路由器管理密码忘记了怎么办&#xff1f;我想修改小米路由器上的配置&#xff0c;在打开miwifi.com的时候&#xff0c;提示需要输入管理密码。但是&#xff0c;我不知道管理密码是多少&#xff0c;忘记了管理密码应该怎么办&#xff1f;答&#xff1a;首先说…

asp.net core源码飘香:Options组件

简介&#xff1a; Options组件是一个小组件&#xff0c;但用的地方很多。它本质是将一个POCO类注册到容器中&#xff08;主要在Startup中作为其他组件的配置功能提供&#xff09;&#xff0c;后续使用的时候就可以通过比如构造函数注入等获取到POCO对象。如果只是为了注入一个P…

DevOps面试问题

转载自 DevOps面试问题 DevOps是一组过程、方法与系统的统称&#xff0c;用于促进开发&#xff08;应用程序/软件工程&#xff09;、技术运营和质量保障&#xff08;QA&#xff09;部门之间的沟通、协作与整合。下面为大家分享DevOps系列的面试问题 持续整合问题 问题一&a…

第五章循环结构(一)

一、while循环&#xff1a; 1.语法&#xff1a;while(循环条件){ //循环操作 } 2.循环条件是一个bolean类型的结果。 3.特点&#xff1a;先判断&#xff0c;后执行&#xff01; 二、程序调试&#xff1a; 1.步骤&#xff1a; 设置断点 单步运行 观察变量 三、 1.i2 等价于ii2; …

bui ajax,BUI 数据交互

BUI里面有3种数据交互.数据请求bui.ajax(option)数据请求 bui.ajax API 数据请求的跨域处理,请查看调试章节.参数: option 是一个对象option.urlType: stringDetail: url地址option.dataType: objectDetail: 请求的参数,默认:{}option.methodType: stringDetail: 默认: GET示例…

SparkSQL性能优化

SparkSQL性能优化 1、设置shuffle过程中的并行度,可以通过spark.sql.shuffle.partitions设置shuffle并行度。&#xff08;在SQLContext.setConf&#xff08;&#xff09;中设置&#xff09;。 2、Hive数据仓库创建的时候&#xff0c;合理设置数据类型&#xff0c;比如设置成I…

微软发布ReactXP:方便开发者构建跨平台应用

说起跨平台开发工具&#xff0c;开发者们最先想到的无外乎是 Cordova 和 Xamarin。但是前者无法提供足够令人满意的性能表现&#xff0c;而后者在 Web 开发上心有余而力不足。所以&#xff0c;微软 Skype 团队基于 React JS 和 React Native 开发了一款全新的跨平台开发工具 —…

2020蓝桥杯省赛---java---A---10( 字串排序)

题目描述 思路分析 set去重 代码实现 package lanqiao;import java.util.*; public class Main {public static Set<String> setnew TreeSet<>();public static void main(String[] args) {Scanner scanner new Scanner(System.in);while (scanner.hasNextLine…

jQuery操作DOM元素案例

直接打开注释即可观察效果&#xff0c;都已经测试通过&#xff01;&#xff01;&#xff01; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>操作DOM元素</title><script src"js/jquery-1.8.3.js" ty…

这些面试中的智力题,你都会了吗

转载自 这些面试中的智力题&#xff0c;你都会了吗 1. 给一个瞎子52张扑克牌&#xff0c;并告诉他里面恰好有10张牌是正面朝上的。要求这个瞎子把牌分成两堆&#xff0c;使得每堆牌里正面朝上的牌的张数一样多。瞎子应该怎么做&#xff1f; 2. 如何用一枚硬币等概率地产生一…

服务器登陆显示其他用户,连接远程服务器显示其他用户

连接远程服务器显示其他用户 内容精选换一换云服务器网络异常、防火墙未放行本地远程桌面端口、云服务器CPU负载过高等场景均可能导致云服务器无法正常登录。本节操作介绍无法登录Linux弹性云服务器的排查思路。当您的云服务器无法远程登录时&#xff0c;我们建议您首先检查是否…

第6章循环结构(二)

一、for循环 1.语法&#xff1a; for(初始化变量并赋值;循环条件;循环迭代){ //循环操作 } eg&#xff1a; for(int i 0;i<100;i){ System.out.print(“好好学习&#xff0c;天天向上”); } 2.执行顺序&#xff1a; &#xff08;1&#xff09;先执行初始化变量并赋值 &…

每日top3热点搜索词统计案例

数据格式&#xff1a; 日期&#xff0c;用户&#xff0c;搜索词&#xff0c;平台&#xff0c;版本 需求&#xff1a; 1、筛选出符合条件&#xff08;城市&#xff0c;平台&#xff0c;版本&#xff09;的数据 2、统计每天搜索uv排名前三的搜索词 3、按照每天的top3搜索词的uv搜…

2019蓝桥杯省赛---java---A---4(迷宫)

题目描述 【问题描述】 下图给出了一个迷宫的平面图&#xff0c;其中标记为 1 的为障碍&#xff0c;标记为 0 的为可以通行的地方。 010000 000100 001001 110000 迷宫的入口为左上角&#xff0c;出口为右下角&#xff0c;在迷宫中&#xff0c;只能从一个位置走到这个它的上、…

面试官最爱问的并发问题

转载自 面试官最爱问的并发问题 在Java相关的岗位面试中&#xff0c;很多面试官都喜欢考察面试者对Java并发的了解程度&#xff0c;而以volatile关键字作为一个小的切入点&#xff0c;往往可以一问到底&#xff0c;把Java内存模型&#xff08;JMM&#xff09;&#xff0c;Jav…