输出使n元棋盘上n个棋不在同一行或同一列或同一对角线的所有布局

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:01:11
n可由键盘输入。

你说的这个问题叫n皇后问题哦,代码如下,不懂就问
/*本程序采用递归的思想,可找N皇后(本程序设定小于20)出全部解。但只是在屏幕上输出,不能输出到文件。*/

#include <stdio.h>

#define N 20

int q[N];/*可以认为是棋盘,下表表示行号,每个下表变量的值表示,列号*/

int count=0;

void print(int n) /*此函数是将结果输出到屏幕*/

{

int i;

count ++;

for(i=1;i<=n;i++)

printf("(%d,%d)",i,q[i]);

printf("\n");

}

int place(int i,int k)/*此函数是判断放置的皇后是否合适,合适则返回1,不合适则返回0*/

{

int j=1;

while(j<k)

{

if((q[i]==i || abs(q[i]-i)==abs(j=k))

return 0;

j++;

}

return 1;

}

void Queens(int k,int n)/*此函数为递归函数用于找出所有皇后的位置*/

{

int i;

if(k>n)

print(n);

else

{