关于皇后
  • 板块灌水区
  • 楼主LoneWolf
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/11/21 15:25
  • 上次更新2023/11/3 23:49:36
查看原帖
关于皇后
338833
LoneWolf楼主2021/11/21 15:25
//八皇后的代码,但是样例数据就是不对,在线等,求指正
#include <iostream>
using namespace std;
const int ArSize = 8;
int num = 0;
void outPut(bool arr[ArSize][ArSize]){
    ++num;
    cout << "No. " << num << endl;
    for (int i = 0; i < ArSize; ++i){
        for (int j = 0; j < ArSize; ++j)
            cout << arr[i][j] << " ";
        cout << endl;
    }
}
bool check(bool arr[ArSize][ArSize], int row, int column){
    if (row == 0)
        return true;
    int i, j;
    for (i = 0; i < row; ++i){
        if (arr[i][column])
            return false;
    }
    i = row - 1;
    j = column - 1;
    while (i >= 0 && j >= 0){
        if (arr[i][j])
            return false;
        --i;
        --j;
    }
    i = row - 1;
    j = column + 1;
    while (i >= 0 && j <= ArSize - 1){
        if (arr[i][j])
            return false;
        --i;
        ++j;
    }
    return true;
}
void solve(bool arr[ArSize][ArSize], int row){
    for (int column = 0; column < ArSize; ++column){
        arr[row][column] = true;
        if (check(arr, row, column)){
            if (row + 1 == ArSize)
                outPut(arr);
            else
                solve(arr, row + 1);
        }
        arr[row][column] = false;
    }
}
int main(){
    bool chessboard[ArSize][ArSize];
    for (auto &i : chessboard){
        for (auto &j : i)
            j = false;
    }
    solve(chessboard, 0);
    return 0;
}
//样例输入
No. 1
1 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 0 1 0 0 0 
0 0 0 0 0 0 0 1 
0 1 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 
0 0 0 0 0 1 0 0 
0 0 1 0 0 0 0 0 
No. 2
1 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 1 0 0 0 0 
0 0 0 0 0 1 0 0 
0 0 0 0 0 0 0 1 
0 1 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 
0 0 1 0 0 0 0 0 
No. 3
1 0 0 0 0 0 0 0 
0 0 0 0 0 1 0 0 
0 0 0 0 0 0 0 1 
0 0 1 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 1 0 0 0 0 
0 1 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 
No. 4
1 0 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 
0 0 0 0 0 0 0 1 
0 0 0 0 0 1 0 0 
0 0 1 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 1 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 
No. 5
0 0 0 0 0 1 0 0 
1 0 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 
0 1 0 0 0 0 0 0 
0 0 0 0 0 0 0 1 
0 0 1 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 1 0 0 0 0 
No. 6
0 0 0 1 0 0 0 0 
1 0 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 
0 0 0 0 0 0 0 1 
0 1 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 1 0 0 0 0 0 
0 0 0 0 0 1 0 0 
No. 7
0 0 0 0 1 0 0 0 
1 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 1 
0 0 0 1 0 0 0 0 
0 1 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 1 0 0 0 0 0 
0 0 0 0 0 1 0 0 
No. 8
0 0 1 0 0 0 0 0 
1 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 0 1 0 0 0 
0 0 0 0 0 0 0 1 
0 1 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 
0 0 0 0 0 1 0 0 
No. 9
0 0 0 0 1 0 0 0 
1 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 
0 0 0 0 0 1 0 0 
0 0 0 0 0 0 0 1 
0 1 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 1 0 0 0 0 0 
...以下省略
2021/11/21 15:25
加载中...