八皇后问题全部解.c
来自「有关八国皇后问题的求解」· C语言 代码 · 共 49 行
C
49 行
#include <stdio.h>
void QueenTry(int i, int rowPos[], int col[], int leftDiag[], int rightDiag[]);
int m = 0;
main()
{
static int rowPos[8];
static int col[8] = {1,1,1,1,1,1,1,1};
static int leftDiag[15] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
static int rightDiag[15] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
QueenTry(0, rowPos, col, leftDiag, rightDiag);
getch();
}
void QueenTry(int i, int rowPos[], int col[], int leftDiag[], int rightDiag[])
{
int j, k;
for (j=0; j<8; j++)
{
if (col[j] && leftDiag[i+j] && rightDiag[i-j+7])
{
rowPos[i] = j;
col[j] = 0;
leftDiag[i+j] = 0;
rightDiag[i-j+7] = 0;
if (i < 7)
{
QueenTry(i+1, rowPos, col, leftDiag, rightDiag);
}
else
{
m++;
printf("<%d> ",m);
for(k=0; k<8; k++) printf("%d\t",rowPos[k]);
printf("\n");
}
col[j] = 1;
leftDiag[i+j] = 1;
rightDiag[i-j+7] = 1;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?