编辑代码

#include <iostream>

const int N = 4;

bool isSafe(int row, int col, int placement[N]) {
    for (int i = 0; i < row; ++i) {
        // 检查是否在同一列或对角线
        if (placement[i] == col || placement[i] - col == i - row || placement[i] - col == row - i) {
            return false;
        }
    }
    return true;
}

void solveNQueens(int row, int n, int placement[N], int& count) {
    if (row == n) {
        // 找到一种解决方案,输出或处理
        ++count;
        return;
    }

    for (int col = 0; col < n; ++col) {
        if (isSafe(row, col, placement)) {
            placement[row] = col;
            solveNQueens(row + 1, n, placement, count);
        }
    }
}

int main() {
    int placement[N] = {0}; // 存储皇后在每一行的列位置
    int count = 0; // 存储解的数量

    solveNQueens(0, N, placement, count);

    std::cout << "Number of solutions: " << count << std::endl;

    return 0;
}