题目描述
初始状态的步数就算1,哈哈
输入:第一个3*3的矩阵是原始状态,第二个3*3的矩阵是目标状态。
输出:移动所用最少的步数
Input
2 8 3
1 6 4
7 0 5
1 2 3
8 0 4
7 6 5
Output
6
#include<bits/stdc++.h>
using namespace std;
struct Node{
int x,y;
int step;
int m[3][3];
int last[2];
}node;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int original[3][3],final[3][3];
bool check(int x,int y){
if(x>=3||x<0||y>=3||y<0) return false;
return true;
}
bool same(int a[3][3]){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(a[i][j]!=final[i][j])
return false;
}
}
return true;
}
int BFS(int x,int y){
queue<Node> q;
node.x=x,node.y=y,node.step=1;
node.last[0]=x,node.last[1]=y;
for(int i=0;i<3;i++){
for(