数据结构用栈和回溯法解决八皇后问题 5

 我来答
RABBITqyh
2011-12-19 · TA获得超过163个赞
知道小有建树答主
回答量:185
采纳率:33%
帮助的人:114万
展开全部
#include <stdio.h>
#include <stdlib.h>

int Judge(int *p, int j)
//判断当前棋子位置是否符合规则,是则返回1,否则返回0;
{
int i;
for(i=0;i<j;i++)
{
if(p[j]==p[i]) return 0;
if(abs(p[j]-p[i])==j-i) return 0;
}
return 1;
}

int main()
{
int a[8]; //a[i]表示第i行的后所在位置(a[3]=0表示第3行的皇后在第0列)
int i=0,j=0,k=0;

for(a[0]=0;a[0]<8;j=0,a[j]++)
for(a[++j]=0;a[j]<8;j=1,a[j]++)
if(Judge(a,j))
for(a[++j]=0;a[j]<8;j=2,a[j]++)
if(Judge(a,j))
for(a[++j]=0;a[j]<8;j=3,a[j]++)
if(Judge(a,j))
for(a[++j]=0;a[j]<8;j=4,a[j]++)
if(Judge(a,j))
for(a[++j]=0;a[j]<8;j=5,a[j]++)
if(Judge(a,j))
for(a[++j]=0;a[j]<8;j=6,a[j]++)
if(Judge(a,j))
for(a[++j]=0;a[j]<8;a[j]++)
if(Judge(a,j))
{
for(i=0;i<8;i++) printf("%d",a[i]);
printf("%3s"," ");
if(!(++k%7)) printf("\n");
}
printf("\n\n一共有%d种解法\n\n",k);
return 0;
}
追问
老大啊 我说的是用栈和回溯解决问题啊  不要忽悠我啊   很急的  不过还是很感谢啊。。
mywinser
2011-12-20
知道答主
回答量:38
采纳率:0%
帮助的人:10.4万
展开全部
FREE PASCAL同步练习P116
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式