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;
}
求求啦!