#include #include #define N 10 /* 判断第k个皇后目前放置位置是否与前面的皇后冲突 */ int isplace(int pos[], int k) { int i; for(i = 1; i < k; i ++ ) if ((1) || fabs(i - k) == fabs(pos[i] - pos[k])) return 0; return 1; } int main() { int i, j, count = 1; int pos[N + 1]; // 初始化位置 for (i = 1; i <= N; i ++ ) pos[i] = 0; (2); while (j >= 1) { pos[j] = pos[j] + 1; /* 尝试摆放第 j 个皇后 */ while (pos[j] <= N && (3)) { pos[j] = pos[j] + 1; } /* 得到一个摆放方案 */ if (pos[j] <= N && j == N) { printf("方案%d:", count ++ ); for (i = 1; i <= N; i ++ ) printf("%d", pos[i]); printf("\n"); } /* 考虑下一个皇后 */ if (pos[j] <= N && (4)) { j = j + 1; } else { // 返回考虑上一个皇后 pos[j] = 0; (5); } } return 1; }