#include<iostream>
#include<string>
#include<memory.h>
#include<algorithm>
using namespace std;
int n;
string tut[5];
int biaoji[5][5];
int inf=0x3f3f3f3f;
int dfs(int x,int y)
{
for(int s=x+1;s<n;s++)
{
if(biaoji[s][y]==inf)break;
biaoji[s][y]++;
}
for(int s=x-1;s>=0;s--)
{
if(biaoji[s][y]==inf)break;
biaoji[s][y]++;
}
for(int s=y+1;s<n;s++)
{
if(biaoji[x][s]==inf)break;
biaoji[x][s]++;
}
for(int s=y-1;s>=0;s--)
{
if(biaoji[x][s]==inf)break;
biaoji[x][s]++;
}
int sum=0;
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
if(biaoji[a][b]==0)
{
biaoji[a][b]++;
sum=max(sum,dfs(a,b));
biaoji[a][b]--;
}
}
}
for(int s=x+1;s<n;s++)
{
if(biaoji[s][y]==inf)break;
biaoji[s][y]--;
}
for(int s=x-1;s>=0;s--)
{
if(biaoji[s][y]==inf)break;
biaoji[s][y]--;
}
for(int s=y+1;s<n;s++)
{
if(biaoji[x][s]==inf)break;
biaoji[x][s]--;
}
for(int s=y-1;s>=0;s--)
{
if(biaoji[x][s]==inf)break;
biaoji[x][s]--;
}
return sum+1;
}
int main()
{
while(cin>>n)
{
if(n==0)break;
memset(biaoji,0,sizeof(biaoji));
for(int a=0;a<n;a++)cin>>tut[a];
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
if(tut[a][b]=='X')
{
biaoji[a][b]=0x3f3f3f3f;
}
}
}
int sum=0;
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
if(biaoji[a][b]==0)
{
biaoji[a][b]++;
sum=max(sum,dfs(a,b));
biaoji[a][b]--;
}
}
}
cout<<sum<<endl;
}
return 0;
}
HDU1045 水dfs....数据量太小了才16.....
最新推荐文章于 2024-08-01 09:34:02 发布