⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 八皇后问题全部解.c

📁 有关八国皇后问题的求解
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -