资源限制
时间限制: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
BBB
WWW

样例输出
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;}}}
}

试题 历届试题 青蛙跳杯子相关推荐

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

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

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

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

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

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

  4. 试题 历届试题 包子凑数(dp)

    试题 历届试题 包子凑数 资源限制 时间限制:1.0s 内存限制:256.0MB 0x00 问题描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包 ...

  5. 试题 历届试题 幸运数(二分)

    试题 历届试题 幸运数 资源限制 时间限制:1.0s 内存限制:256.0MB 题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然 ...

  6. 试题 历届试题 翻硬币(贪心)

    试题 历届试题 翻硬币 资源限制 时间限制:1.0s 内存限制:256.0MB Work hard,Play harder. 问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排 ...

  7. 试题 历届试题 买不到的数目(dp/数学)

    试题 历届试题 买不到的数目 资源限制 时间限制:1.0s 内存限制:256.0MB $Daily English 曾几何时,我流连梦境,心比天高,人生充满希望. I dreamed a dream ...

  8. 试题 历届试题 带分数(全排列)

    试题 历届试题 带分数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 ...

  9. java 试题 历届试题 单词分析 题解

    试题 历届试题 单词分析 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度 ...

  10. 蓝桥杯---试题 历届试题 填字母游戏(博弈)

    试题 历届试题 填字母游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏 ...

最新文章

  1. 工作中常用,实用工具推荐!
  2. 【专访】PP租车张丙军:“打虎亲兄弟“,好团队才能书写互联网传奇
  3. NET问答: LINQ 中为啥不能将 StartsWith() 转成 Like('abc%') ?
  4. Lua语法基础(1)---简介、基本数据类型、表达式
  5. GDI+图像处理前言
  6. Java即时类| hashCode()方法与示例
  7. kafka消息存储格式
  8. h5 html被缓存,【Web前端问题】html5离线缓存,不能被缓存问题
  9. UNIX环境高级编程 第11章 线程
  10. 谷歌发布机器学习云平台 开放语音识别API
  11. 区块链架构与应用(区块链入门篇)
  12. 笔者分享:关于Win7 XPS查看器的详细介绍【386w】
  13. 【数据统计】移动端数据可视化模板、数据统计、Axure移动端图表数据统计设计
  14. 如何查看Linux虚拟机ip地址
  15. wow 如何写dz 宏
  16. Cobalt Strike Malleable C2
  17. STM32实现PT100测温系统设计报告(OLED屏显示)
  18. python 实现多核 CPU 并行计算
  19. 微信小程序新蓝海全行业深度解析报告
  20. 计算机新技术在体育中的应用,应用计算机技术在现代体育领域中的运用

热门文章

  1. C#.net 微信公众账号接口开发
  2. 【Matlab】RGB, HSV 颜色空间绘制
  3. minHash最小哈希
  4. 春节假期我读过的那些书
  5. libxml2常用库函数详解
  6. 电路方程的矩阵形式 c语言,电路方程的矩阵形式
  7. 【SVPWM】SVPWM算法推导及其Simulink仿真(一)
  8. 根据电路建立微分方程
  9. CFile记录日志——写各种数据类型的日志(CFile读写包括编码UTF-8)
  10. 一战赚了1090亿,恐怖的张一鸣!