C++编程,用A*算法重排九宫图

来源:百度知道 编辑:UC知道 时间:2024/05/26 19:58:44
求助各位高手啦!
在一个3*3的矩阵内,将随即的1、2、3、4、5、6、7、8、0排列成以下形式:
1 2 3
8 0 4
7 6 5

昏, 那个不叫九宫图吧, 那个是螺旋矩阵, 比九宫图简单多了:

#include <iostream>
#include <cstring>
using namespace std;

const int size = 200;
int iM2Dimen[size][size];

#define M iM2Dimen

int Digit(int n)
{
int x = 0;

do{
++x;
n /= 10;
}while(n != 0);

return x;
}

void Print(int n)
{
int width = Digit(n*n);
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
cout.width(width);
cout << M[i][j] << ' ';
}
cout << endl;
}
}

void Helix(int n)
{
memset(M, 0, sizeof M);
int iR = -1, iC = -1;
int x = n;

// 把i <= n*n 改成i < n*n 看看
for(int i = 1, j = 0; i <= n*n; ++i)
{
for(++iR, ++iC, j = 0; j < x; ++iC, ++i, ++j)
M[iR][iC] = i;
if(i > n*n)break;
--x;

f