信息
- ID
- 688
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 8
- 标签
- 递交数
- 12
- 已通过
- 10
- 上传者
#include<bits/stdc++.h>
using namespace std;
char a[1000][1000],bj[9]={'1','2','3','4','5','6','7','8','9'};
int b[1000][1000],n,sum,x,g;
int pd(int x,int y){
for(int i=1;i<=n;i++){
if(b[x][y]==a[x][i])return 0;
}
for(int i=1;i<=n;i++){
if(b[x][y]==a[i][y])return 0;
}
return 1;
}
void dfs(int x,int y,int t){
if(t==x){
sum++;
return;
}
if(b[x][y]==0){
if(y==n)dfs(x+1,1,t);
else dfs(x,y+1,t);
}
else{
for(int i=0;i<n;i++){
b[x][y]=bj[i];
int s=pd(x,y);
if(s==0)continue;
else{
if(y==n)dfs(x+1,1,t+1);
else dfs(x,y+1,t+1);
}
}
return;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]=='*'){
b[i][j]++;
x++;
a[i][j]='0';
}
}
}
dfs(1,1,0);
cout<<sum;
return 0;
}