蓝桥杯2017年第八届真题
题目
X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。
X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。
如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。
*WWWBBB
其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。
X星的青蛙很有些癖好,它们只做3个动作之一:
跳到相邻的空杯子里。隔着1只其它的青蛙(随便什么颜色)跳到空杯子里。隔着2只其它的青蛙(随便什么颜色)跳到空杯子里。对于上图的局面,只要1步,就可跳成下图局面:
WWW*BBB
本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。
输入为2行,2个串,表示初始局面和目标局面。
输出要求为一个整数,表示至少需要多少步的青蛙跳。
输入
输入为2行,2个串,表示初始局面和目标局面。
输出
输出要求为一个整数,表示至少需要多少步的青蛙跳。
样例输入
*WWBB WWBB* 12
样例输出
2 1
解题思路
本题是一道变化前后对应的题目,是典型的广度优先搜索的题目,类似的题目有题目 1426: 蓝桥杯历届试题-九宫重排。
广度优先搜索的基本思路是:建立一个队列,将初始状态的字符串存入其中,再建立一个map,存储变换到每一个字符串需要几次变换,以及该字符串是否曾经出现过。
不断对队列中最前面的字符串进行变换,若变换后的字符串和结果一致,输出该字符串在map中对应的所需变换次数;若不一致,则判断该字符串是否出现过,若未出现过,则存入队列且在map中存储相应的变换次数。
代码
#include<bits/stdc++.h> using namespace std; queue <string> q; map <string,int> maps; string a,b; int steps; void BFS(){ int i,len,sub_empty;//sub_empty空位的下标 int sc,F = 0;//是否找到一致的 while (!q.empty()){ string d,c = q.front(); q.pop();//出队 len = c.size(); sc = maps[c]; for (i=0;i<c.size();i++)//找到空位 if (c[i]=='*') break; sub_empty = i; for (i=sub_empty-3;i<=(sub_empty+3);i++) { if (i>-1 && i!=sub_empty && i<len)//防止下标越界 { d = c; d[sub_empty] = c[i]; d[i] = c[sub_empty];//交换位置即表示跳跃 if (d==b)//符合了 { F = 1; steps = sc+1; break; } if (maps[d]==0)//未出现过 { q.push(d); maps[d] = sc+1; } } } if (F==1) break; } } int main() { cin >> a >> b; q.push(a);//入队 maps[a] = 0; if (a==b) printf("0"); else { BFS(); printf("%d",steps); }return 0; }
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859相关知识
第八届蓝桥杯全国总决赛真题解析
第十一届蓝桥杯青少组C++竞赛规则及样题.pdf.pdf
蓝桥杯攻略!省一经验+考试全流程+技巧分享
2024年十五届蓝桥杯省赛大学B组真题(Java残缺版)
2017年4月自考04435老年护理学历年真题及答案
蓝桥杯 算法训练 字符串编辑
蓝桥杯大赛——视觉艺术设计赛
收藏!2021各类编程赛事时间表盘点
广东省肇庆市农业学校学生在第八届“瑞派•华南兽医杯”临床技能大赛中荣获佳绩
第八届“雄鹰杯”小动物医师技能大赛总决赛圆满落幕
网址: 蓝桥杯2017年第八届真题 https://www.mcbbbk.com/newsview552520.html
上一篇: 如何帮助宠物青蛙度过寒冬 |
下一篇: 魔兽世界加布林宠物怎么获得 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352