题目描述
初始状态的步数就算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
注:
题目意思是,8个数加一个空位(0),每一步可以让周围的数(上下左右)走到这个空位里来,问初始矩阵最少要走几步才能变成结果矩阵。
1、二维数组作为函数变量传递,可以直接改变传入的数组本身,不需要引用,C++不支持对数组进行引用;
2、BFS第一个入队的是空位0的坐标,记第一个入队的Node的上一个坐标是空位0的坐标,不一定是(0,0);
3、判断新走的一步的位置有效if(judgeP(newX,newY)&&(newX!=top.lastx||newY!=top.lasty))而不是if(judgeP(newX,newY)&&newX!=top.lastx&&newY!=top.lasty)
#include<stdio.h>
#include<queue&g