AcWing 1107 魔板
BFS的应用,思路就是记录下魔板的理想状态和初始状态,之后不断按照规则对魔板进行变换,和理想状态进行对比,直到达成理想状态,注意优先队列的使用
#include<bits/stdc++.h>
using namespace std;
const int N = 10;
char g[2][4];
unordered_map<string, pair<char, string>>pre; //一个字符串映射到一个操作和一个状态
unordered_map<string, int>dist;
void Set(string state){
//将二维数组重新赋给字符串
for(int i = 0; i < 4; i ++ ) g[0][i] = state[i];
for(int i = 0, j = 7; i < 4; i ++ , j -- ) g[1][i] = state[j];
}
string get(){
//用于将魔板状态放入临时二维数组g内
string res;
for(int i = 0; i < 4; i ++ ){
res += g[0][i]; //放第一行
}
for(int