八皇后问题(二)
1、八皇后問題(二)
思路:我們采取回溯的方法來解決,還是那樣表示,比如數組a, a[1] = 8;表示這個放在第一行第八列
2、代碼實現:
#include<stdio.h> #include<math.h>int count = 0; 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 second_queen() {int a[512] = {0};int i = 1, n;printf("請輸入幾皇宮問題");scanf("%d",&n);while (i > 0) { //這里循環條件,因為回溯的時候會進行i--,初始是為1,所以當i===0的時候跳出循環,for (a[i]++; a[i] <= n; a[i]++) {if(check_queen(a, i))break;}if (a[i] <= n) {if (i == n) {printf("這是第%d個八皇后\n", ++count);for (int k = 1; k <
總結