今天是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;
}

为时尚早,未来可期!!!