n皇后问题,c++,输出每行皇后列数,无解,则输出no solute
时间: 2024-03-17 14:45:41 浏览: 22
好的,以下是使用C++解决n皇后问题并输出每行皇后列数的代码:
```
#include <iostream>
#include <vector>
using namespace std;
bool is_valid(vector<int>& queens, int row, int col) {
for (int i = 0; i < row; i++) {
if (queens[i] == col || queens[i] - col == i - row || queens[i] - col == row - i) {
return false;
}
}
return true;
}
void solve_n_queens(int n, vector<int>& queens, vector<vector<int>>& solutions) {
if (queens.size() == n) {
solutions.push_back(queens);
return;
}
for (int col = 0; col < n; col++) {
if (is_valid(queens, queens.size(), col)) {
queens.push_back(col);
solve_n_queens(n, queens, solutions);
queens.pop_back();
}
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> solutions;
vector<int> queens;
solve_n_queens(n, queens, solutions);
if (solutions.empty()) {
cout << "no solute" << endl;
} else {
for (auto& solution : solutions) {
for (auto& queen : solution) {
cout << queen << " ";
}
cout << endl;
}
}
return 0;
}
```
这段代码实现了输入n并解决n皇后问题,如果有解则输出每行皇后的列数,如果无解则输出"no solute"。