http://poj.org/problem?id=1154
#include<stdio.h>
#include<string.h>
int dir_x[4]={1,-1,0,0};
int dir_y[4]={0,0,-1,1};
int map[25][25],vis1[25][25];
int vis2[30];
int m,n,ans;
void dfs(int x,int y,int step)
{
vis1[x][y]=1;
vis2[map[x][y]-'A']=1;
if(step>ans) ans=step;
for(int i=0;i<4;i++)
{
int lx=x+dir_x[i];
int ly=y+dir_y[i];
if(1<=lx&&lx<=m&&1<=ly&&ly<=n&& vis1[lx][ly]==0&&vis2[map[lx][ly]-'A']==0)
{
dfs(lx,ly,step+1);
vis1[lx][ly]=0;
vis2[map[lx][ly]-'A']=0;
}
}
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
for(int i=1;i<=m;i++)
{
getchar();
for(int j=1;j<=n;j++)
{
scanf("%c",&map[i][j]);
}
}
memset(vis1,0,sizeof(vis1));
memset(vis2,0,sizeof(vis2));
ans=1;
dfs(1,1,1);
printf("%d\n",ans);
}
return 0;
}
poj 1154 LETTERS
最新推荐文章于 2022-03-12 11:11:51 发布