试题 历届试题 青蛙跳杯子
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。
X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。
如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。
*WWWBBB
其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。
X星的青蛙很有些癖好,它们只做3个动作之一:
1. 跳到相邻的空杯子里。
2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里。
3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里。
对于上图的局面,只要1步,就可跳成下图局面:
WWW*BBB
本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。
输入为2行,2个串,表示初始局面和目标局面。
输出要求为一个整数,表示至少需要多少步的青蛙跳。
样例输入
WWBB
WWBB
样例输出
2
样例输入
WWWBBB
BBBWWW
样例输出
10
数据规模和约定
我们约定,输入的串的长度不超过15
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
#include<iostream>
#include<queue>
#include<set>
using namespace std;struct state
{string str;//当前状态下的字符串int step;//当前状态下的步数
};
int main()
{int i,j,k;int jump[]={-3,-2,-1,1,2,3};//可移动的6种方案string ss,orignStr,objStr;set<string> Set;queue<state> q;state orignState,nowState;cin>>orignStr>>objStr;orignState.str=orignStr;orignState.step=0;q.push(orignState);Set.insert(orignStr);while(!q.empty()){nowState=q.front();//每次将要进行处理的状态放入nowState中q.pop();ss=nowState.str;for(i=0;i<ss.length();i++){if(ss[i]=='*'){for(j=0;j<6;j++)//对所有方案进行遍历{k=i+jump[j];if(k>=0&&k<ss.length())//如果当前换位合法{swap(ss[i],ss[k]);//交换青蛙和当前空杯子的位置nowState.str=ss;nowState.step++;if(!Set.count(ss))//如果当前字符串还未出现过{q.push(nowState);Set.insert(ss);//将之前未出现过的字符串放入s集合中}if(ss==objStr)//如果当前字符串等于目标字符串,则输出步数{cout<<nowState.step;return 0;}swap(ss[k],ss[i]);//恢复现场nowState.str=ss;nowState.step--;}}break;}}}
}
试题 历届试题 青蛙跳杯子相关推荐
- 【蓝桥杯】历届试题 青蛙跳杯子(广度优先搜索bfs)(C++)
[蓝桥杯]历届试题 青蛙跳杯子 问题描述 思路分析 代码实现 问题描述 题目链接:青蛙跳杯子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 X星球的流行宠物是青蛙,一般有两种颜色: ...
- 【蓝桥杯】历届试题 青蛙跳杯子(广度优先搜索bfs)
历届试题 青蛙跳杯子 问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯 ...
- 蓝桥杯——九宫重排、青蛙跳杯子
1.历届试题 九宫重排 时间限制:1.0s 内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中 ...
- 试题 历届试题 包子凑数(dp)
试题 历届试题 包子凑数 资源限制 时间限制:1.0s 内存限制:256.0MB 0x00 问题描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包 ...
- 试题 历届试题 幸运数(二分)
试题 历届试题 幸运数 资源限制 时间限制:1.0s 内存限制:256.0MB 题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然 ...
- 试题 历届试题 翻硬币(贪心)
试题 历届试题 翻硬币 资源限制 时间限制:1.0s 内存限制:256.0MB Work hard,Play harder. 问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排 ...
- 试题 历届试题 买不到的数目(dp/数学)
试题 历届试题 买不到的数目 资源限制 时间限制:1.0s 内存限制:256.0MB $Daily English 曾几何时,我流连梦境,心比天高,人生充满希望. I dreamed a dream ...
- 试题 历届试题 带分数(全排列)
试题 历届试题 带分数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 ...
- java 试题 历届试题 单词分析 题解
试题 历届试题 单词分析 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度 ...
- 蓝桥杯---试题 历届试题 填字母游戏(博弈)
试题 历届试题 填字母游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏 ...
最新文章
- 工作中常用,实用工具推荐!
- 【专访】PP租车张丙军:“打虎亲兄弟“,好团队才能书写互联网传奇
- NET问答: LINQ 中为啥不能将 StartsWith() 转成 Like('abc%') ?
- Lua语法基础(1)---简介、基本数据类型、表达式
- GDI+图像处理前言
- Java即时类| hashCode()方法与示例
- kafka消息存储格式
- h5 html被缓存,【Web前端问题】html5离线缓存,不能被缓存问题
- UNIX环境高级编程 第11章 线程
- 谷歌发布机器学习云平台 开放语音识别API
- 区块链架构与应用(区块链入门篇)
- 笔者分享:关于Win7 XPS查看器的详细介绍【386w】
- 【数据统计】移动端数据可视化模板、数据统计、Axure移动端图表数据统计设计
- 如何查看Linux虚拟机ip地址
- wow 如何写dz 宏
- Cobalt Strike Malleable C2
- STM32实现PT100测温系统设计报告(OLED屏显示)
- python 实现多核 CPU 并行计算
- 微信小程序新蓝海全行业深度解析报告
- 计算机新技术在体育中的应用,应用计算机技术在现代体育领域中的运用