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

  *WWWBBB

  其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。

  X星的青蛙很有些癖好,它们只做3个动作之一:
  1. 跳到相邻的空杯子里。
  2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里。
  3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里。

  对于上图的局面,只要1步,就可跳成下图局面:

  WWW*BBB

  本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。

  输入为2行,2个串,表示初始局面和目标局面。
  输出要求为一个整数,表示至少需要多少步的青蛙跳。

样例输入
*WWBB
WWBB*
样例输出
2

思路:很明显的广搜嘛,我居然还想着是深搜不断记录到达某个状态的最小步数,ε=(´ο`*)))唉.

广搜正解,每种状态只可入队一次,每个串的每只青蛙都有6种跳跃方式,用map记录状态.

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
using namespace std;
typedef long long ll;
const int maxn = 1e5+5;
const double esp = 1e-7;
const int ff = 0x3f3f3f3f;
map<int,int>::iterator it;struct node
{string s;int step;node(string s,int step):s(s),step(step){}
};string s1,s2;
int ans;
map<string,int> mp;void bfs()
{queue<node> q;q.push(node(s1,0));while(!q.empty()){node t = q.front();q.pop();if(t.s == s2){ans = t.step;return ;}int k = t.s.size();for(int i = 0;i< k;i++)//遍历每只青蛙 {for(int j = -3;j<= 3;j++)//左右各可以走1~3步 {string tmp = t.s;if(i+j< 0||i+j>= k||tmp[i+j]!= '*')continue;tmp[i+j] = tmp[i];tmp[i] = '*';if(!mp[tmp]){mp[tmp] = 1;q.push(node(tmp,t.step+1));}    }}}
}int main()
{cin>>s1>>s2;bfs();cout<<ans<<endl;return 0;
}

蓝桥杯 青蛙跳杯子(广搜)相关推荐

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

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

  2. 蓝桥杯 青蛙跳杯子【第八届】【省赛】【C组】 BFS 广搜

    资源限制 时间限制:1.0s   内存限制:256.0MB X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子, ...

  3. 蓝桥杯 青蛙跳杯子

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

  4. 蓝桥杯-学霸的迷宫-广搜-java

    算法提高 学霸的迷宫   时间限制:1.0s   内存限制:256.0MB 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面 ...

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

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

  6. 蓝桥杯练习:青蛙跳杯子

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

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

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

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

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

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

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

最新文章

  1. 测试MM32F3277中的MicroPython的Signal功能
  2. nginx+memcache+tomcat配置(新手笔记)
  3. 薄板冲压成型过程的计算机仿真与应用,薄板冲压成型过程的计算机仿真与应用_钟志华.pdf...
  4. GBK字库集测试求助
  5. svnadmin hotcopy
  6. 硬盘属不属于计算机主机组成,电脑主机是由哪些硬件组成
  7. Neo4j 爬坑笔记for3.2.6
  8. 如何防止QT程序未响应
  9. redis分布式锁-redisson
  10. h5 数字变化_那些H5用到的技术(6)——数字滚动特效
  11. 离散数学:格与布尔代数
  12. 【M24】了解虚方法、多继承、虚基类、RTTI的成本
  13. Spark—15分钟教程
  14. source insight 4.0 闪退问题
  15. 蒲公英linux客户端登录提示密码错误的解决方法
  16. 七种寻址方式(基址加变址寻址方式)
  17. 如何更改电脑桌面壁纸,换上自己想要的壁纸?
  18. 天地图引擎加载自定义WMTS图层
  19. Python玩转数据分析——双因素方差分析
  20. Linux 从零开始部署RocketMQ集群遇到的问题

热门文章

  1. C语言-五子棋【详解】
  2. idea使用git拉取代码到本地库
  3. 打开Firefox对Guacamole剪贴板的支持
  4. 快慢指针和链表原地反转
  5. numpy报ValueError: could not broadcast input array from shape
  6. LLVM 编译器学习笔记之六十五 -- GVN(global value number)
  7. Dreamhost初次使用感受
  8. SDK软件开发工具包
  9. 工业机械设备设计能够分为哪些类别?
  10. 软文推广怎么写?做到这四点,让你轻松增强软文的吸引力