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

📄 bahuanhou.txt

📁 八皇后问题是一个古老而著名的问题
💻 TXT
字号:
  #define   QUEENNO   8           /*   8皇后,可以变   */   
  #define   MAXNO   32   
  #include   <stdio.h>   
  #include   <stdlib.h>   
  int   X[MAXNO];   
  char   D[MAXNO][MAXNO];   
  int   count=0;   
  /   *   函数声明   */   
  void   initiate(int   n);   
  void   nqueen(int   n);   
  void   display(int   n);   
  main()   
  {int   queenno=QUEENNO;   
      initiate(queenno);   
    nqueen(queenno);   
    printf("共有%d个解,解已经保存在文件result.txt中\n",count);   
  }   
    
  void   initiate(int   n)   /*初始化   */   
  {int   i;   
  for(i=0;i<n;i++)   
          X[i]=-1;   
    return;   
  }   
  void   nqueen(int   n)   
  {   int   k;   
    X[0]=0;   
    k=0;                 /*   k是当前行   */   
    while(k>=0)   
      {X[k]++;     /*   移到下一行   */   
      while(X[k]<=n&&!place(k))   /*此处能放皇后吗?*/   
      {X[k]++;   
      }   
      if(X[k]<=n)   
      {   if(k==n-1)   display(n);   
              else   {k++;X[k]=0;}   
      }   
      else   
      {   k--;   
      }   
    }   
  }   
  int   place(int   k)   /*   判断一个皇后能否放在第k行和第x[k]列*/   
  {   
  int   i;   
  i=0;   
  while(i<k)   
  {if((X[i]==X[k])||(abs(X[i]-X[k])==abs(i-k)))/*约束条件判断*/   
      return   0;   
    i++;   
  }   
  return   1;   
  }   
  void   display(int   n)   /*显示结果*/   
  {   
  FILE   *fw;   
  int   i,j;   
  count++;   
  fw=fopen("result.txt","a");   
  for(i=0;i<n;i++)   
    for(j=0;j<n;j++)   
    D[i][j]='o';   
  for(i=0;i<n;i++)   
      D[i][X[i]-1]='*';   
  fprintf(fw,"%d\n",count);   
  fprintf(fw,"-------------------------\n");   
  for(i=0;i<n;i++)   
    for(j=0;j<n;j++)   
    {if(j==n-1)fprintf(fw,"%c     \n",D[i][j]);   
        else   fprintf(fw,"%c     ",D[i][j]);   
    }   
  fprintf(fw,"-------------------------\n");   
  fclose(fw);   
  return;   
  }

⌨️ 快捷键说明

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