queen.c

来自「数据结构学习用到的一些程序!!里面有二叉树相关的几个」· C语言 代码 · 共 56 行

C
56
字号
#include<stdio.h>
#include<malloc.h>
#include<math.h>

int *site;        //每行的棋子所放置的位置,下标从0开始
int queen;        //皇后的数目
int count=0;      //第几种放置的可能性

//判断第n+1行的放置是否合适
int IsOk(int n)
{
	int i;
    for(i=0;i<n;i++)
	{
		if(site[i]==site[n])
        return 0;
        if(abs(site[i]-site[n])==n-i)
        return 0;
	}
    return 1;
}

//具体执行放置判断以及输出最终结果
void Queen(int n)
{
	int i;
    if(queen==n)
	{
		printf("NO.%d: ",++count);
        for(i=0;i<queen;i++)
		{ 
			printf("%d ",site[i]);
		} 
		printf("\n");
        return;
	} 
	else
	{ 
		for(i=0;i<queen;i++)
		{ 
			site[n]=i;
            if(IsOk(n))
            Queen(n+1);                    
              //函数处
		} 
	} 
}

void main()
{
	printf("Please input the num of the queen:");
    scanf("%d",&queen);
    site=(int *)malloc(queen*sizeof(int));
    Queen(0);
}

⌨️ 快捷键说明

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