八皇后问题(三)
思路:
用递归实现,既然是深度优先搜索,采用回溯思想,一般都可以用递归来实现。
代码:
#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(