信息学社团邀请你解决八皇后问题

国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上
时间: 00:00
0
已放置皇后
0
冲突数量
92
总解数
手动模式:点击棋盘格子放置或移除皇后
八皇后核心C++实现代码(回溯算法)
// 八皇后问题回溯求解 #include <iostream> #include <vector> using namespace std; // 存储所有解 vector<vector<string>> solutions; // 检查当前位置是否可以放置皇后 bool isValid(int row, int col, vector<int>& cols) { for (int i = 0; i < row; i++) { // 检查列冲突或对角线冲突 if (cols[i] == col || abs(i - row) == abs(cols[i] - col)) { return false; } } return true; } // 回溯求解 void backtrack(int row, vector<int>& cols) { // 找到一个解 if (row == 8) { vector<string> board; for (int i = 0; i < 8; i++) { string line(8, '.'); line[cols[i]] = 'Q'; board.push_back(line); } solutions.push_back(board); return; } // 尝试在当前行的每一列放置皇后 for (int col = 0; col < 8; col++) { if (isValid(row, col, cols)) { cols[row] = col; // 放置皇后 backtrack(row + 1, cols); // 递归下一行 cols[row] = -1; // 回溯,移除皇后 } } } // 主函数 int main() { vector<int> cols(8, -1); backtrack(0, cols); cout << "八皇后问题共有" << solutions.size() << "种解" << endl; return 0; }
解题方案:
点击「生成解题方案」按钮获取八皇后问题的解题步骤
当前模式: 手动模式手动
游戏状态: 准备开始
冲突检测: 无冲突
最快解排行榜
暂无记录,挑战八皇后问题即可上榜!