八皇后问题(三)

来源:互联网 发布:伴随矩阵 编辑:程序博客网 时间:2024/05/17 13:07

 八皇后问题(三)


思路:


用递归实现,既然是深度优先搜索,采用回溯思想,一般都可以用递归来实现。

代码:


#include<stdio.h>#include<math.h>int a[512] = {0};int n;int sum;int check_queen(int a[], int n){    for (int i = 1; i < n; i++)        if (fabs(n - i) == fabs(a[n] -a[i]) || a[i] == a[n])           return 0;    return 1;}/* *采用递归的方式实现 * */void third_queen(int i){  for (int j = 1; j <= n; j++) {      a[i] = j;      if (check_queen(a, i)) {         if (i >= n) {            printf("一共有%d个皇后\n", ++sum);            for (int m = 1; m < n; m++) {                printf("%d\n", a[m]);            }         } else{            third_queen(i + 1);         }      }  }}int main(){    printf("请输入几皇宫问题");   scanf("%d", &n);   third_queen(1);    }    

结果:



0 0