题解 | #八皇后#

八皇后

https://www.nowcoder.com/practice/fbf428ecb0574236a2a0295e1fa854cb

#include <iostream>
#include <vector>
using namespace std;
//同一斜对角线皇后行差值绝对值等于列差值绝对值
vector<int> pos(9);//八个皇后的列位置,下标代表第几行皇后
vector<string> allStr;//dfs的过程确保了自动有序
bool judge(int row,int& choice){
    for(int i=1;i<row;i++){//遍历前row-1个皇后的列位置
        if(pos[i]==choice) return false;//同列
        if(abs(row-i)==abs(choice-pos[i])) return false;//左上对角线,右上对角线(不可能有其他情况)
    }
    return true;
}
void dfs(int row,string& str){
    if(row>8){
        allStr.emplace_back(str);
        return;
    }
    for(int col=1;col<=8;col++){
        if(judge(row,col)){
            pos[row] = col;
            str+=(col+'0');
            dfs(row+1,str);
            str.erase(str.end()-1);
        }
    }
    return;
}
int main() {
    int n;
    string str="";
    dfs(1,str);
    while (cin >> n) {
        cout<<allStr[n-1]<<endl;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:21
被夸真的超级开心,好可爱的姐姐
码农索隆:老色批们不用脑补了,我把金智妮的图找来了查看图片
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求...:注意把武大标粗标大 本地你俩不是乱杀
实习进度记录
点赞 评论 收藏
分享
07-07 11:33
江南大学 Java
已经在暑假实习了&nbsp;,没有明确说有hc,纠结实习到八月份会不会有点影响秋招毕竟感觉今年好多提前批
程序员小白条:92的话准备提前批,其他没必要,没面试机会的,而且你要准备充分,尤其八股和算法题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务