以下是使用C ++编写的八皇后问题的代码:

#include #include

using namespace std;

// 定义一个全局变量n,表示棋盘大小 int n = 8;

// 打印棋盘 void print_board(int board[][8]) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { cout << board[i][j] << " "; } cout << endl; } }

// 判断当前位置是否能够放置皇后 bool is_valid(int board[][8], int row, int col) { // 检查列是否合法 for(int i=0; i<row; i++) { if(board[i][col] == 1) { return false; } }

// 检查左上方是否合法
for(int i=row-1, j=col-1; i>=0 && j>=0; i--, j--) {
    if(board[i][j] == 1) {
        return false;
    }
}

// 检查右上方是否合法
for(int i=row-1, j=col+1; i>=0 && j<n; i--, j++) {
    if(board[i][j] == 1) {
        return false;
    }
}

// 如果该位置满足条件,返回true
return true;

}

// 求解八皇后问题 bool solve_queen(int board[][8], int row) { // 如果所有行都已经放置完毕,返回true if(row == n) { return true; }

// 尝试在当前行的每一列放置皇后
for(int i=0; i<n; i++) {
    // 如果当前位置满足条件,放置皇后
    if(is_valid(board, row, i)) {
        board[row][i] = 1;
        // 递归地处理下一行
        if(solve_queen(board, row+1)) {
            return true;
        }
        // 如果无法解决问题,回溯并尝试下一个位置
        board[row][i] = 0;
    }
}
// 如果无法在当前行放置皇后,返回false
return false;

}

int main() { int board[8][8] = {0};

if(solve_queen(board, 0)) {
    print_board(board);
}
else {
    cout << "No solution found!" << endl;
}
return 0;

}

用c++写一个八皇后问题的代码

原文地址: https://www.cveoy.top/t/topic/bCu8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录