第一题、
#include<bits/stdc++.h>
using namespace std;
void dfs(int x,int y,int cnt);
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int n,m;
bool f=false;
bool c[91];
int ma=-1;
struct point
{
int x,y;
};
point r[10000];
int lr=0;
char a[100][100];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
dfs(1,1,1);
cout<<ma-1<<endl;
return 0;
}
void dfs(int x,int y,int cnt)
{
c[(int)a[x][y]]=true;
ma=max(ma,cnt);
for(int i=0;i<4;i++)
{
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&c[(int)a[tx][ty]]==false)
{
dfs(tx,ty,cnt+1);
c[(int)a[tx][ty]]=false;
}
}
}
第二题、