找不出哪错了,样例过不了

P1219 [USACO1.5] 八皇后 Checker Challenge

User586768 @ 2023-07-25 19:18:38

#include <bits/stdc++.h>
using namespace std;
int n,cnt=0,vis[40][40];
bool ji(int x,int y){
    bool f=true;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(abs(j-i)==(x-y)||j+i==x+y){
                f=false;
            }
        }
    }
    return f;
}
bool check(int x,int y){
    return vis[y-1][x]!=1&&ji(x,y);
}
void dfs(int x,int y){
    if(y==n){
        if(cnt<3){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    if(vis[i][j]==1){
                        cout<<x<<' ';
                    }
                }
                cout<<endl;
            }
        }
        cnt++;
    }
    for(int i=0;i<n;i++){
        if(check(i+1,y)){
            vis[y][i]=1;
            dfs(i+1,y+1);
            vis[y][i]=0;
        }
    }
}
int main(){
    cin>>n;
    dfs(0,0);
    cout<<cnt;
    return 0;
}

by zqh123b @ 2023-07-26 08:10:19

@zk123bc 参考tj


|