#include
int p[20] = {0, 0, 0, 1, 0,
1, 0, 1, 0, 0,
0, 1, 0, 1, 0,
0, 0, 1, 0, 1};
int mask[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int n[3][3];
void print()
{
int i, j;
for (i = 0; i < 3; i ++)
{
for (j = 0; j < 3; j ++)
printf("%3d", n[i][j]);
printf("\n");
}
printf("=========\n");
}
int check(int level)
{
int x, y, r;
x = level / 3;
y = level % 3;
r = 1;
if (x - 1 >= 0)
if (p[n[x][y] + n[x-1][y]] == 0)
r = 0;
if (y-1 >= 0)
if (p[n[x][y] + n[x][y-1]] == 0)
r = 0;
return (r);
}
int fill(int level)
{
int i;
if (level == 9)
print();
else
for (i = 1; i <= 10; i ++)
if (mask[i] == 0)
{
mask[i] = 1;
n[level/3][level%3] = i;
if (check(level)==1)
fill(level+1);
mask[i] = 0;
}
}
main()
{
fill(0);
system("pause");
}
测试正确,采纳哦