输出使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
{