提交时间:2024-08-20 17:12:06
运行 ID: 169812
#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++){ 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]=line[y]=0; else if(fie[x][y]=='R') continue; if(x==n&&y==n){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(fie[i][j]=='R') sum++; } } 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++){ for(int j=1;j<=n;j++){ cin>>q[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ sum=0; memset(fie,'.',sizeof(fie)); memset(row,0,sizeof(row)); memset(line,0,sizeof(line)); dfs(i,j); } } cout<<ans<<endl; } return 0; }