提交时间:2024-08-20 17:10:21

运行 ID: 169808

#include<bits/stdc++.h> using namespace std; char fie[5][5],q[5][5]; int n,ans,sum,f; int row[5],line[5]; void dfs(int x,int y){ for(int i=y;i<=n;i=i+1){ if(q[x][y]=='.' && fie[x][y]=='.' && !row[x] && !line[y]){ fie[x][y]='R'; row[x]=1; line[y]=1; } else if(q[x][y]=='X'){ row[x]=0; line[y]=0; } else if(fie[x][y]=='R'){ continue; } if(x==n && y==n){ for(int i=1;i<=n;i=i+1){ for(int j=1;j<=n;j=j+1){ if(fie[i][j]=='R'){ sum=sum+1; } } } ans=max(ans,sum); sum=0; return; } else if(y==n){ dfs(x+1,1); fie[x][y]='.'; return; } else{ dfs(x,y+1); fie[x][y]='.'; return; } } } int main(){ while(cin>>n && n){ ans=0; for(int i=1;i<=n;i=i+1){ for(int j=1;j<=n;j=j+1){ cin>>q[i][j]; } } for(int i=1;i<=n;i=i+1){ for(int j=1;j<=n;j=j+1){ sum=0; memset(fie,'.',sizeof(fie)); memset(row,0,sizeof(row)); memset(line,0,sizeof(line)); dfs(i,j); } } cout<<ans<<endl; } return 0; }