#include<stdio.h>
#include<cstring>
#include<iostream>
using namespace std;
const int N=30;
char s[N][N];
int vis[100],num[N][N],flag,maxn,n,m;
int mov[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
void dfs(int x,int y)
{
int i,j,k;
int tx,ty;
for(i=0;i<4;i++)
{
tx=x+mov[i][0];
ty=y+mov[i][1];
if(tx>=0&&tx<n&&ty>=0&&ty<m&&!vis[num[tx][ty]])
{
vis[num[tx][ty]]=1;
flag++;
dfs(tx,ty);
if(flag>maxn)
maxn=flag;
flag--;
vis[num[tx][ty]]=0;
}
}
}
int main()
{
int i,j,k;
while(cin>>n>>m)
{
for(i=0;i<n;i++)
{
scanf("%s",s[i]);
for(j=0;j<m;j++)
num[i][j]=s[i][j]-'A'+1;
}
flag=1,maxn=1;
vis[num[0][0]]=1;
dfs(0,0);
cout<<maxn<<endl;
}
return 0;
}
poj 1154
最新推荐文章于 2019-07-29 16:53:10 发布