文章

25

粉丝

0

获赞

180

访问

3.8k

头像
八皇后 题解:
P1265 北京大学/北京航空航天大学机试题
发布于2026年3月18日 11:07
阅读数 35

正常解法

​
#include<bits/stdc++.h>
using namespace std;

vector<vector<int>>queen(95);
int sum = 0;
int y[10];

bool check(int k){
    if(k > 8){
        return true;
    }
    return false;
}

bool pd(int k){
    for(int i = 1; i < k; i++){
        if(y[i] == y[k]){
            return false;
        }

        if(abs(y[k] - y[i]) == abs(k - i)){
            return false;
        }
    }
    return true;
}

void save_queen(){
    for(int i = 1; i <= 8; i++){
        queen[sum].push_back(y[i]);
    }
}

void DFS(int k){
    if(check(k)){
        save_queen();
        sum ++;
        return;
    }

    for(int i = 1; i <= 8; i++){
        y[k] = i;

        if(pd(k)){
            DFS(k + 1);
        }
    }
}

int main(){
    DFS(1);
    int n;
    while(cin>> n){
        for(int i = 0; i < 8; i++){
            printf("%d",queen[n-1][i]);
        }
        printf("\n");
    }
    return ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发