提交时间:2023-10-05 23:21:20

运行 ID: 105280

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> using namespace std; char s[6]; int a[6][6]; int b[6][6]; int t=0; int fun(int a[][6],int n,int ans) { if(ans>t){ t=ans; return 0; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[i][j]==1){ for(int p=0;p<n;p++) for(int q=0;q<n;q++) b[p][q]=a[p][q]; int f=1; for(int k=j+1;k<n&&b[i][k]!=0;k++) if(b[i][k]==2){ f=0; break; } for(int k=j-1;k>=0&&b[i][k]!=0;k--) if(b[i][k]==2){ f=0; break; } for(int k=i+1;k<n&&b[k][j];k++) if(b[k][j]==2){ f=0; break; } for(int k=i-1;k>=0&&b[k][j];k--) if(b[k][j]==2){ f=0; break; } if(f==1){ b[i][j]=2; fun(b,n,ans+1); } } } } } int main() { int n; int w[100][100]; while(cin>>n&&n){ for(int i=0;i<n;i++){ cin>>s; for(int j=0;s[j];j++) if(s[j]=='X') a[i][j]=0; else a[i][j]=1; } t=0; fun(a,n,0); printf("%d\n",t); } return 0; }