来自「c 的一些经典算法,满好的,适合初学者. 也可以当作小程序看,对初学者会很有帮」· 代码 · 共 93 行

TXT
93
字号
 
八皇后问题  
 


#include "stdio.h"

int a[8],b[24],c[24],d[24];

int i, k,t=0; 

void  print()

{    

    t++;

    printf("       %d",t);

    for (k=0;k<8;k++)

        printf("   %d",a[k]);

    printf("\n");

}

void try(int i)

{

    int j;

   for (j=0;j<8;j++)

    {/*每个皇后都有8种可能位置*/

        if ((b[j]==0) &&(c[i+j]==0)&& (d[i-j]==0))/*判断位置是否冲突*/

        {

              a[i]=j;/*摆放皇后*/

              b[j]=1;/*宣布占领第J行*/

              c[i+j]=1; /*占领两个对角线*/

              d[i-j]=1;

              if (i<8) 

                try(i+1);/*8个皇后没有摆完,递归摆放下一皇后*/

              else 

                print();/*完成任务,打印结果*/

             b[j]=0;    /*回溯*/

             c[i+j]=0;

             d[i-j]=0;

        }

    }

}

void main()

{

    for( k=0;k<24;k++) 

    {/*数据初始化*/

        b[k]=0;

        c[k]=0;

        d[k]=0;

    }

    try(1);/*从第1个皇后开始放置*/

}
 
 
 

⌨️ 快捷键说明

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