今天是2021年4月21日,前天我刚刚参加了第一次蓝桥杯比赛,今天对了答案,应该是不理想吧,有句话不是说,努力了会有成果的吗,这大概是放屁吧,让人沉沦的谎言,老师说的没错,我努力的很盲目,没有效率,这应该是原因之一,万一,真正的原因是我根本不适合算法比赛呢?第一次而已,以后还能加油的,算法不像别的,不能一直令人愉悦的正反馈,但是如果喜欢的话,一定也会坚持下去的吧!!!
八数码问题
原题链接:https://www.dotcpp.com/oj/problem1878.html
题目是青蛙跳杯子,但本质上没有区别,是一道BFS模板题
初始的状态是:WWBB
需要达成的状态:WWBB
可以移动的方法:向左或向右 1格,2格或3格
直接上代码吧
#include<iostream>
#include<unordered_map>
#include<quene>
using namespace std;
int dir[6]={1,-1,2,-2,3,-3};
string start;//初始的状态
string end;//结束的状态
unordered_map<string,int>mp;//记录字符串出现次数,将字符串对应上int
quene<string>q;//bfs用到的队列
int bfs()
{
q.push(start);
mp[start]=0;
while(q.size())
{
string t=q.front();
q.pop();
int index=0;
int id=mp[t];
for(int i=0;i<t.length();i++)
if(t[i]=='*')index=i;
for(int i=0;i<6;i++)
{
int ix=index+dir[i];
if(ix>t.length()||ix<0)continue;
swap(t[index],t[ix]);
if(mp.count(t)>0)
{
swap(t[index],t[ix]);
continue;
}
mp[t]=id+1;
if(t==end)return mp[t];
swap(t[index],t[ix]);
}
}
return -1;
}
int main()
{
cin>>start;
cout<<bfs();
return 0;
}
为时尚早,未来可期!!!
最后一次更新于2021-04-20
0 条评论