eightqueen again

qiyudong qiyudong 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
小弟我第一次接触回溯法,花了大半天,才把伪代码翻译成c语言,还不太懂.我现在的问题是为什么 j 必须定义为局部变量,全局变量为什么就错了.全局时,在用他之前不也初始化了吗( for(j=0;j<8;j++) )?还有回溯是深度优先还是广度优先?
#include<stdio.h>
int store[8],line[8],z[15],f[15];
int count;
int i;
void print()
{
int k;
for(k=0;k<8;k++)
printf("%d ",store[k]);
printf("\n");
count++;
}
void try(int i)
{
int j;
for(j=0;j<8;j++)
if(line[j]==0&&f[i+j]==0&&z[i-j+7]==0)
{
line[j]=1;z[i-j+7]=1;f[i+j]=1;store[i]=j;
if(i<7)
try(i+1);
else print();
line[j]=0;z[i-j+7]=0;f[i+j]=0;
}
}
main()
{
try(0);
printf("total:%d",count);
system("pause");
}


...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
qiyudong
C语言 70,040 成员 243,237 内容