代码如下:
#include
#define _CRT_SECURE_NO_WARNINGS
int a[8][8] = { 0 };
int success = 0;
int n = 0;
void print_tu();
void step(int i, int j);
void main()
{
step(4, 6);
}
void print_tu()
{
int i, j;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
}
void step(int i,int j)
{
n = n + 1;
a[i][j] = n;
if (n == 64)
{
success = 1;
print_tu();
}
else
{
if (success != 1 && (i-1>=0)&&(j-2>=0)&&a[i - 1][j - 2] == 0)step(i - 1, j - 2);
if (success != 1 && (i-2>=0)&&(j-1>=0)&&a[i - 2][j - 1] == 0)step(i - 2, j - 1);
if (success != 1 && (i-2>=0)&&(j-1>=0)&&a[i - 2][j - 1] == 0)step(i - 2, j - 1);
if (success != 1 && (i-2>=0)&&(j+1<=7)&&a[i - 2][j + 1] == 0)step(i - 2, j + 1);
if (success != 1 && (i-1>=0)&&(j+2<=7)&&a[i - 1][j + 2] == 0)step(i - 1, j + 2);
if (success != 1 && (i+1<=7)&&(j-2>=0)&&a[i + 1][j - 2] == 0)step(i + 1, j - 2);
if (success != 1 && (i+2<=7)&&(j-1>=0)&&a[i + 2][j - 1] == 0)step(i + 2, j - 1);
if (success != 1 && (i+2<=7)&&(j+1<=7)&&a[i + 2][j + 1] == 0)step(i + 2, j + 1);
if (success != 1 && (i+1<=7)&&(j+2<=7)&&a[i + 1][j + 2] == 0)step(i + 1, j + 2);
if (success != 1)
{
a[i][j] = 0;
n = n - 1;
}
}
}