这是一个八皇后问题的c语言源码,求大牛解释一下每一行的意思 5

#include<stdio.h>#defineNUM8intnCount;boolCheck(int*pSet,intnCol,intnTestRow){for(int... #include <stdio.h>
#define NUM 8
int nCount;
bool Check(int *pSet, int nCol, int nTestRow)
{
for(int i=0;i<nCol;i++)
{
if(pSet[i] == nTestRow)
return false;
if(pSet[i]-i == nTestRow-nCol)
return false;
if(pSet[i]+i == nTestRow+nCol)
return false;
}
return true;
}
void Queen(int *pSet,int nCol)
{
if(nCol == NUM)
{
for(int i=0;i<NUM;i++)
printf("(%d:%d)",i,pSet[i]);
nCount ++;
printf("\n");
}
for(int i=0;i<NUM;i++)
{
if(Check(pSet,nCol,i))
{
pSet[nCol] = i;
Queen(pSet,nCol+1);
}
}
}
main()
{
int pSet[NUM];
nCount = 0;
Queen(pSet,0);
printf("Tolal solutions: %d\n", nCount);
getchar();
}
展开
 我来答
深湛还透彻的才俊u
2011-12-29
知道答主
回答量:1
采纳率:0%
帮助的人:1662
展开全部
#include <stdio.h>
#define NUM 8
int nCount;
bool Check(int *pSet, int nCol, int nTestRow)//判断是否可以在nCol行的nTextRow位置放置新的皇后
{
for(int i=0;i<nCol;i++)
{
if(pSet[i] == nTestRow) //判断有没有其他行(pSet[i])皇后与TextRow行皇后同列
return false;
if(pSet[i]-i == nTestRow-nCol) //判断有没有其他行(pSet[i])皇后与TextRow行皇后在右45度斜线上共线
return false;
if(pSet[i]+i == nTestRow+nCol)//判断有没有其他行(pSet[i])皇后与TextRow行皇后在左45度斜线上共线
return false;
}
return true;//此位置可以放置新皇后
}
void Queen(int *pSet,int nCol)//放置新皇后的函数
{
if(nCol == NUM)//nCol==NUM则棋盘已经被设置8个皇后,输出地图,nCount++
{
for(int i=0;i<NUM;i++)
printf("(%d:%d)",i,pSet[i]);
nCount ++;
printf("\n");
}
for(int i=0;i<NUM;i++)//设置棋盘上的皇后
{
if(Check(pSet,nCol,i))//判断nCol行的第i位是否可放置新的皇后
{
pSet[nCol] = i;
Queen(pSet,nCol+1);//可放置则放置新皇后后进行第nCol+1行的皇后放置
}
}
}
main()
{
int pSet[NUM];
nCount = 0;
Queen(pSet,0);
printf("Tolal solutions: %d\n", nCount);
getchar();
}
:孩纸你看这个是你要的答案么,我们家琛琛给的~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式