题解 | #八皇后#

八皇后

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

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int num = 0;  //开始存
int ans[92][8];//存八皇后的所有串
int pos[8];//存第i行的皇后存在哪一列,下标为第几行,内容为该行数放于第几列

void DFS(int x) {
    if (x == 8) { //到达递归边界,退出
        for (int i = 0; i < 8; i++) {
            ans[num][i] = pos[i];
        }
        num++;
        return;
    }
    //加入他的邻居,一共有八列可能
    for (int i = 0; i < 8; i++) {
        int j;  //j为所处行数
        for (j = 0; j < x; j++) {//判断已经加入的行数
            if (pos[j] == i ||
                    abs(pos[j] - i) == abs(j - x)) {  //有列已经加入,或者对角线上存在元素(列-列==行-行)
                break;//有冲突,直接退出
            }
        }
        if (j == x) { //遍历结束发现没有冲突
            //加入队伍,x行至于i列
            pos[x] = i;
            DFS(x + 1);
        }

    }
}

int main() {
    int n;
    DFS(0);
    while (cin >> n) {
        for (int i = 0; i < 8; i++) {
            cout << ans[n - 1][i] + 1;
        }
        cout << endl;
    }
    return 0;
}

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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