问题标题: 酷町堂:4370 防盗(guard)4370 防盗(guard)4370 防盗(guard)4370 防盗(guard)啊啊啊!

0
0
已解决
卢秋宇
卢秋宇
修练者
修练者

大佬帮忙看一下!!!谢谢!!!!!!

/*

*/
#include<bits/stdc++.h>
using namespace std;
int n,ans[105],a[105][105],cnt;
bool L[105],Z[205],F[205];
bool check(){
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]==0){
                return false;
            }
        }
    }
    return true;
}
void dfs(int t){
    if(check()){
        cnt++;
        return ;
    }
    for(int i=1;i<=n;i++){
        if(!L[i]&&!Z[t-i+n]&&!F[t+i]&&a[t][i]==0){
            ans[t]=i;
            L[i]=true;
            Z[t-i+n]=true;
            F[t+i]=true;
            a[t][i]=1;
            dfs(t+1);
            a[t][i]=0;
            L[i]=false;
            Z[t-i+n]=false;
            F[t+i]=false;
        }
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
        }
    }
    dfs(1);
    cout<<cnt;
    return 0;
}

求求啦!


0
我要回答