⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nqueens.c

📁 用c编写的N皇后问题
💻 C
字号:

main()
{
int i,j,good=1,a[43][43]={0},n,ix,jy,num=0,x,it,jt,test=0;
printf("\nn=");
scanf("%d",&n);
if(n>41){printf("Error.");goto exit;}
for(i=1,j=1;1;)
   {
   if(good)
      {
      a[j][i]=1;
      if(j==n)
  {
  for(jy=1;jy<=n;jy++)
     {
     printf("\n");
     for(ix=1;ix<=n;ix++){printf(" %d",a[jy][ix]);}
     }
  num++;
  a[j][i]=0;
  i++;
  getch();
  printf("\n");
  }
      else {j++;i=1;}
      }
   else i++;
   if(i>n)
   {
   j--;
   for(ix=1;ix<=n;ix++){if(a[j][ix]==1)x=ix;}
   a[j][x]=0;
   i=x+1;
   }
   if((j==1)&&(i==(n+1)))goto out;
   else if(j==1) good=1;
   else if(i>n)  good=0;
   else {
 for(it=i-1,jt=j-1;(it>0)&&(jt>0);it--,jt--)
     if(a[jt][it]==1)test=1;
 for(it=i+1,jt=j-1;(it<=n)&&(jt>0);it++,jt--)
     if(a[jt][it]==1)test=1;
 for(it=i,jt=j-1;jt>0;jt--)
     if(a[jt][it]==1)test=1;
 if(test==0)good=1;
 else good=0;
 test=0;
 }
   }
out:printf("\n num=%d",num);
exit:getch();
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -