C语言回溯法算N皇后问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
void huisu(int l);
int jc(int l,int i);
int n,h[100];
int x;
void main()
{ printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆欢迎使用☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("使用说明:本程序利用回溯法计算N皇后问题,计算后会输入若干行数,每一行代表着一种码放方法,行中数字代表着第棋盘第N行的位置。\n");

printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("N=");
scanf("%d",&n);
x=0;
huisu(1);
printf("码放方法一共有:%d种\n",x);
system("pause");
}

void huisu(int l)
{
int i,j;
if (l==n+1)
{
x=x+1;
printf("第%d种码放方法如下:\n",x);
for(i=1;i<=n;i++)
printf("%-3d",h[i]);
printf("\n");
}
for (i=1;i<=n;i++)
{
h[l]=i;
if (jc(l,i)!=1)
huisu(l+1);
}
}

int jc(int l,int i)
{
int k;
for (k=1;kif (abs(l-k)==abs(h[k]-i)||i==h[k])
return 1;
return 0;
}

相关文档
最新文档