请教八皇后里面的一个句子的意思~谢谢了

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:07:30
#include <stdio.h>
#include <math.h>

int q[20];
int count=0;
int cc = 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)
{
int j = 1;
while(j<k) {
if((q[j]==i) || abs(q[j]-i)== abs(j-k))
return 0;
j++;
}
return 1;
}
void Queens(int k,int n)
{
int i;
if(k>n)
print(n);
else {
for(i=1;i<=n;i++)
if(Place(i,k)==1){
q[k]=i;
Queens(k+1,n);
}
}
}

int main()
{
int n;
scanf("%d",&n);
Queens(1,n);
printf("\n%d",cc);
return 0;
}

里面有用到深搜吗?回溯是有的?

Queens(k+1,n); 递归搜索下一层的状态,这就是深搜啊。
q[k]=i; i在变化,试完一个重新试下一个,也就是回溯。

回溯应该就算是深搜的一种吧.只不过回溯不保留搜索树.