帮我用枚举法写一个8皇后问题c++
时间: 2024-06-13 11:05:17 浏览: 10
以下是使用C++语言实现的8皇后问题的枚举算法:
```c++
#include <iostream>
using namespace std;
const int N = 8; // 棋盘大小
int cnt = 0; // 解的个数
int queen[N]; // 存放皇后的位置
// 判断当前位置是否可以放置皇后
bool check(int row, int col) {
for (int i = 0; i < row; i++) {
if (queen[i] == col || abs(row - i) == abs(col - queen[i])) {
return false;
}
}
return true;
}
// 输出解的情况
void print() {
cout << "Solution " << ++cnt << ":" << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (queen[i] == j) {
cout << "Q ";
} else {
cout << ". ";
}
}
cout << endl;
}
cout << endl;
}
// 枚举所有可能的解
void solve(int row) {
if (row == N) {
print();
return;
}
for (int col = 0; col < N; col++) {
if (check(row, col)) {
queen[row] = col;
solve(row + 1);
}
}
}
int main() {
solve(0);
return 0;
}
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)