八皇后问题(三)
八皇后問題(三)
思路:
用遞歸實現,既然是深度優先搜索,采用回溯思想,一般都可以用遞歸來實現。
代碼:
#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(
總結
- 上一篇: 八皇后问题(二)
- 下一篇: 数据结构之深度优先搜索(用栈实现)问题