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

📄 n皇后.c

📁 在n×n的棋盘上放置n个皇后
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
int nqueens(int *a, int k, int n)
{
    int  i , j, conflict;
    if (k==n) return 1;

    for (i=0;i<n; i++)
    {
        conflict =0;
        for (j=0;j<k;j++)
        {
            if (i==a[j]||k-j==i-a[j]||k-j==a[j]-i)
                conflict = 1;
        }
        if (conflict==0)
        {
            a[k]=i;
            if (nqueens(a, k + 1, n)==1) return 1;
        }
    }
    return 0;
}
void output(int* a, int n)
{
    int i, j;
    printf("\nPlace Queens in the following positions:\n");
    for (i = 0; i < n; i++)
    {
        printf("row%3d-col%3d:|",i,a[i]);
        for (j = 0; j < a[i];j++) printf(" |");
        printf("Q|");
        for (j = a[i]+1; j < n; j++) printf(" |");
        putchar('\n');
    }
}
int main()
{
    int n,*a;
    printf("Please enter an integer as the size of the promblem: N=");
    scanf("%d", &n);
    if (n>0) a= (int *)malloc(n*sizeof(int));
    else
    {
        printf("Error ! Invalid input!\n");
        return 0;
    }
    if (nqueens(a,0,n)==1) output(a,n);
    else
        printf("Sorry!There is no solution for %d Queens problem!\n",n);
    free(a);
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -