BFS例题Acwing 1111.字母
作者:
米彩
,
2024-03-06 23:03:07
,
所有人可见
,
阅读 39
#include<iostream>
using namespace std;
int a,b;
const int N=30;
bool grn[N*N];
char mc[N][N];
int res=1;
void dfs(int x,int y,int cnt)
{
res=max(res,cnt);//***
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
for(int i=0;i<4;i++)
{
int t=x+dx[i];
int k=y+dy[i];
if(t>=0&&t<a&&k>=0&&k<b&&!grn[int(mc[t][k])-65])
{
grn[int(mc[t][k])-65]=true;
dfs(t,k,cnt+1);
grn[int(mc[t][k])-65]=false;
}
}
return ;
}
int main()
{
cin>>a>>b;
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
cin>>mc[i][j];
}
}
grn[int(mc[0][0])-65]=true;//标记第一个已经走过了
dfs(0,0,1);
cout<<res<<endl;
return 0;
}