//#include <stdio.h>
//#include <stdlib.h>
//#include <math.h>
//#define n 8
//int judge(int *data) {
// for (int i = 0; i < n; i++) {
// for (int j = i+1; j < n; j++) {
// if ((data[i] == data[j]) || (abs(i-j) == abs(data[i]-data[j])))
// return 0;
// }
// }
// return 1;
//}
//
//int main() {
// int data[8];
// int count = 0;
// for (int i = 0; i < pow(n, n); i++) {
// int temp = i;
// for (int j = 0; j < n; j++) {
// data[j] = temp%n;
// temp = temp/n;
// }
// if (judge(data))
// count++;
// }
//
// printf("%d", count);
// return 0;
//}
//邢照虎 16-12-01
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 8
int result = 0;
int judge(int index, int *data) {
for (int i = 1; i < index; i++) {
if (data[i] == data[index] || abs(i-index) == abs(data[i]-data[index]))
return 0;
}
return 1;
}
void dfs(int count, int *data) {
if (count > n )
result++;
else {
for (int i = 1; i <= n; i++) {
data[count] = i;
if (judge(count, data)) {
dfs(count+1, data);
}
}
}
}
int main() {
int data[n];
for (int i = 0; i < n; i++) {
data[i] = 0;
}
dfs(1, data);
printf("%d", result);
return 0;
}
N皇后
最新推荐文章于 2022-12-01 10:22:27 发布