#include <iostream>
using namespace std;
int x,y,max,temp,num[27],str[21][21];
int step[8]={1,0,-1,0,0,1,0,-1};
void dfs(int i, int j)
{
int a,b;
for(int k=0;k<8;k+=2)
{
a= i+step[k];
b= j+step[k+1];
if(a>=0&&a<x&&b>=0&&b<y&&!num[str[a][b]])
{
num[str[a][b]]=1;
temp++;
dfs(a,b);
if(temp>max)
max=temp;
temp--;
num[str[a][b]]=0;
}
}
}
int main()
{
char s[21];
temp=0;
max=0;
while( cin>>x>>y )
{
memset(num,0,sizeof(num));
memset(str,0,sizeof(str));
getchar();
for(int i=0;i<x;i++)
{
gets(s);
for(int j=0;j<y;j++)
str[i][j]=s[i]-'A'+1;
}
num[str[0][0]]=1;
dfs(0,0);
cout<<max<<endl;
}
return 0;
}
POJ 1154
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.