您的位置:首页 > 其它

poj 1154 LETTERS

2012-08-29 16:14 411 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: