https://leetcode.com/problems/sliding-puzzle/
class Solution {
public:
int slidingPuzzle(vector<vector<int>>& board) {
int res = 0, m = board.size(), n = board[0].size();
string target = "123450", start = "";
vector<vector<int>> dirs{
{1, 3}, {0, 2, 4}, {1,5}, {0,4}, {1,3,5},{2,4}}; //各个位置0能达到的位置
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
start += to_string(board[i][j]);
}
}
set<string> visited; //判重
visited.insert(start);
queue<string> Q;
Q.push(start);
while(!Q.empty()){
for(int i=Q.size()-1; i>=0; i--){
string cur = Q.front(); Q.pop();
if(cur==tar