八皇后问题的数据结构课程设计

最近几个星期要搞数据结构的课程设计,其中就有一个八皇后问题,哪位知道具体的程序,希望不是计算机等级考试中用的那种,赶紧发过来,不胜感激!!!... 最近几个星期要搞数据结构的课程设计,其中就有一个八皇后问题,哪位知道具体的程序,希望不是计算机等级考试中用的那种,赶紧发过来,不胜感激!!! 展开
 我来答
TstoneZou
2009-06-04
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>

int m=0,n; //m为摆法计数,n为皇后个数
int *a;

int fit(int i, int j) //检查(i,j)上能否放棋子
{
int j1=j, i1=i, ok1=1; //检查第i行上能否放棋子

while( (j1>1)&&ok1)
{
j1--;
ok1=a[j1]!=i ;
}

j1=j; i1=i; //检查对角线上能否放棋子

while( (j1>1)&&(i1>1)&&ok1)
{
j1--;
i1--;
ok1=a[j1]!=i1 ;
}

j1=j; i1=i; //检查另一对角线上能否放棋子

while( (j1>1)&&(i1<n)&&ok1)
{
j1--;
i1++;
ok1=a[j1]!=i1 ;
}

return ok1;
}

void queen(int j) //从第j列开始逐个试探
{

if (j>n)
{
m++;
printf("放法%d ",m);

for (int i=1;i<=n;i++)
printf(" (%d,%d)",a[i],i);

printf("\n");
}
else for( int i=1; i<=n;i++)
if(fit(i,j)) //检查(i,j)上能否放棋子
{
a[j]=i; //在(i,j)上放一个棋子

queen(j+1) ;
}
}

void main()
{
printf("请输入皇后棋子的个数n:\n");
scanf("%d",&n); //n为皇后个数

a = new int[n];

queen(1);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式