八皇后问题 同样的代码 每次提交 不同的样例RE是怎么回事
查看原帖
八皇后问题 同样的代码 每次提交 不同的样例RE是怎么回事
449082
赵海博楼主2021/11/19 20:07

/*************************************************************************
        > File Name: test.cpp
      > Author: Zhao haibo
      > Mail: 1243187638@qq.com
      > Created Time: Fri Nov 19 19:10:58 2021
 ************************************************************************/

#include <iostream>
#include <cstdio>

using namespace std;

const int N = 1005;
int n, a[N];
bool row[N], dg[N], udg[N];
int flag;

void dfs(int k) {
    if(k == n) {
        if(++flag > 3) return ;
        for(int i = 0; i < n; i++) printf("%d ", a[i]);
        printf("\n");
        return ;
    }
    for(int i = 1; i <= n; i++) {
        if(!row[i] && !dg[k + i] && !udg[n - k + i]) {
            a[k] = i;
            row[i] = dg[k + i] = udg[n - k + i] = true;
            dfs(k + 1);
            row[i] = dg[k + i] = udg[n - k + i] = false;
        }
    }
    return ;
}

int main() {
    scanf("%d", &n);
    dfs(0);
    printf("%d", flag);
    return 0;
}
2021/11/19 20:07
加载中...