八数码难题有一个3*3的棋盘,其中有0-8 9个数字,0表示空格,其他的数字可以和0交换位置.求由初始状态1 2 34 5 67 8 0到达目标状态步数最少的解.最好用c
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 14:33:25
![八数码难题有一个3*3的棋盘,其中有0-8 9个数字,0表示空格,其他的数字可以和0交换位置.求由初始状态1 2 34 5 67 8 0到达目标状态步数最少的解.最好用c](/uploads/image/z/11458417-49-7.jpg?t=%E5%85%AB%E6%95%B0%E7%A0%81%E9%9A%BE%E9%A2%98%E6%9C%89%E4%B8%80%E4%B8%AA3%2A3%E7%9A%84%E6%A3%8B%E7%9B%98%2C%E5%85%B6%E4%B8%AD%E6%9C%890-8+9%E4%B8%AA%E6%95%B0%E5%AD%97%2C0%E8%A1%A8%E7%A4%BA%E7%A9%BA%E6%A0%BC%2C%E5%85%B6%E4%BB%96%E7%9A%84%E6%95%B0%E5%AD%97%E5%8F%AF%E4%BB%A5%E5%92%8C0%E4%BA%A4%E6%8D%A2%E4%BD%8D%E7%BD%AE.%E6%B1%82%E7%94%B1%E5%88%9D%E5%A7%8B%E7%8A%B6%E6%80%811+2+34+5+67+8+0%E5%88%B0%E8%BE%BE%E7%9B%AE%E6%A0%87%E7%8A%B6%E6%80%81%E6%AD%A5%E6%95%B0%E6%9C%80%E5%B0%91%E7%9A%84%E8%A7%A3.%E6%9C%80%E5%A5%BD%E7%94%A8c)
八数码难题有一个3*3的棋盘,其中有0-8 9个数字,0表示空格,其他的数字可以和0交换位置.求由初始状态1 2 34 5 67 8 0到达目标状态步数最少的解.最好用c
八数码难题
有一个3*3的棋盘,其中有0-8 9个数字,0表示空格,其他的数字可以和0交换位置.求由初始状态
1 2 3
4 5 6
7 8 0
到达目标状态步数最少的解.
最好用c
八数码难题有一个3*3的棋盘,其中有0-8 9个数字,0表示空格,其他的数字可以和0交换位置.求由初始状态1 2 34 5 67 8 0到达目标状态步数最少的解.最好用c
输入方法:
例如:
input(从键盘):
1 2 3 7 4 5 8 0 6
output(向屏幕):
Step:1
1 2 3
4 5 6
7 8 0
Step:2
1 2 3
4 5 0
7 8 6
Step:3
1 2 3
4 0 5
7 8 6
Step:4
1 2 3
0 4 5
7 8 6
Step:5
1 2 3
7 4 5
0 8 6
Step:6
1 2 3
7 4 5
8 0 6
我的程序:
#include
#include
#include
struct bsm
{
int s[9];
int prep,pos;
} ar1[1000],ar2[1000];
int h1,r1,h2,r2,step;
struct bsm p;
int pd(int k)
{
int i,j,b1,b2;
b1=1;
p.s[p.pos+k]=p.s[p.pos]+p.s[p.pos+k];
p.s[p.pos]=p.s[p.pos+k]-p.s[p.pos];
p.s[p.pos+k]=p.s[p.pos+k]-p.s[p.pos];
p.pos=p.pos+k;
for (i=0;i