请你根据上述代码用C++写一个完整的代码
时间: 2024-02-27 15:52:28 浏览: 19
好的,以下是一个完整的 N 皇后问题的解决方案的 C++ 代码实现:
```c++
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 15;
int n, sum = 0, x[MAXN];
bool Place(int t) {
for (int i = 1; i < t; i++) {
if (x[i] == x[t] || abs(x[i] - x[t]) == abs(i - t)) {
return false;
}
}
return true;
}
void Backtrack(int t) {
if (t > n) {
sum++;
printf("第%d放置方案为: ", sum);
for (int i = 1; i <= n; i++) {
printf("%d ", x[i]);
}
printf("\n");
} else {
for (int i = 1; i <= n; i++) {
x[t] = i;
if (Place(t)) {
Backtrack(t + 1);
}
}
}
}
int main() {
printf("请输入 N 的值:");
scanf("%d", &n);
Backtrack(1);
printf("共有 %d 种方案\n", sum);
return 0;
}
```
这段代码首先通过 `Place()` 函数判断在第 `t` 行第 `x[t]` 列放置皇后是否合法,如果合法则递归调用 `Backtrack(t+1)` 继续放置下一行的皇后,否则回溯到上一行重新选择位置。最终输出所有的方案和方案总数。