×

Loading...

Topic

This topic has been archived. It cannot be replied.
  • 工作学习 / IT技术讨论 / 请教各位哪里可找到有关八皇后算法的源程序?急,谢谢各位了!!
    • C
      本文发表在 rolia.net 枫下论坛#include <conio.h>
      #define MAXN 20
      int n, m,good;
      int col[MAXN+1],a[MAXN+1];
      int b[2*MAXN+1],c[2*MAXN+1];
      main()
      {
      int i,j;
      int num=1;
      char awn;
      printf("Input n: "); /*输入皇后的个数,例如8*/
      scanf("%d",&n);
      for(j=0;j<=n;j++)
      a[j]=1;
      for(j=0;j<=2*n;j++)
      b[j]=c[j]=1;
      m=1;
      col[1]=1;
      good=1;
      col[0]=1;
      do{
      if(good)
      if(m==n)
      {
      printf("NO. %d method.\n",num); /*输出第 num种排列方法*/
      printf(" ");
      for(i=1;i<=n;i++)
      printf("%4d",i);
      printf("\n");

      for(i=1;i<=n;i++)
      { printf("%d",i);
      for(j=1;j<=n;j++)
      {if(j==col[i])
      {
      printf(" Q"); /*Q的位置为皇后的位置*/
      }
      else printf(" *");
      }
      printf("\n");
      }

      awn=getch();
      if(awn=='Q'&brvbar;&brvbar;awn=='q')
      exit();
      else
      num++;
      while(col[m]==n)
      {
      m--;
      a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=1;
      }
      col[m]++;
      }
      else{
      a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=0;
      col[++m]=1;
      }
      else{
      while(col[m]==n)
      {
      m--;
      a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=1;
      }
      col[m]++;
      }
      good=a[col[m]]&&b[m+col[m]]&&c[n+m-col[m]];
      }
      while(m!=0);
      }更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 谢谢. 请问有JAVA版吗? 急
    • 记得我还在上高中的时候这个题目就很热了
      我们戏称它为"扒皇后", 见面就问"你BA皇后了吗"
      • 高中时觉得这个很难
    • 你复习一下递归的概念就想起来了!!!
    • 呵呵,估计是要交第一个assignment了吧?在york?