真的对不住大家。刚刚由于写 代码,一符号搞错了,导致双对列只有一个起作用了。现在该好了。原谅我这个菜鸟呀。
/***
author:zhangrong
date:2013/4/16
title:解决八数码问题
the key of problem:在程序的开始阶段,根据初始化状态与目标状态的奇偶性来判断结果是否存在
因为数字上下左右移动奇偶性不变
//x表示空格
u:上 d:下 l:左 r:右
test: input: 2 3 4 1 5 x 7 6 8
***/
#include<iostream>
#include<string.h>
#include<map>
#define NUM 500000
using namespace std;
struct POINT
{
int s,w;
char d;
}queue[NUM],Fqueue[NUM]; //使用双向队列
char ans[NUM]; //存放答案的数组
int dir[4][2]={1,0,-1,0,0,1,0,-1};//{1,0,0,1,-1,0,0,-1}; //
int main()
{
int t[9]={100000000,10000000,1000000,100000,10000,1000,100,10,1};
int count,m,n,i,j,k;
map<int,int> find; //当find【i】=find[j] 相遇的时候说明有结果了
char w[3][3],w2[9],finaW[9]={'1','2','3','4','5','6','7','8','x'};
//输入初始状态的数组
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>w[i][j];
count=0;
for(i=0;i<3;i++)