题目:http://acm.hdu.edu.cn/showproblem.php?pid=1035
这几天学习搜索,只能做一些简单的水题....
#include <stdio.h>
#include <string.h>
char map[12][12];
int visit[12][12];
int main()
{
char p,local;
int a,b,c,M,N,sum;
while(1)
{
scanf("%d%d%d",&a,&b,&c);
p=getchar();
if(!a&&!b&&!c)
break;
sum=0;
memset(visit,0,sizeof(visit));
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
scanf("%c",&map[i][j]);
p=getchar();
}
N=1;
M=c;
local=map[N][M];
while(!visit[N][M]&&N<=a&&M<=b&&N>0&&M>0)
{
sum++;
if(local=='S')
{
visit[N][M]=sum;
N++;
local=map[N][M];
}
else if(local=='N')
{
visit[N][M]=sum;
N--;
local=map[N][M];
}
else if(local=='E')
{
visit[N][M]=sum;
M++;
local=map[N][M];
}
else if(local=='W')
{
visit[N][M]=sum;
M--;
local=map[N][M];
}
}
if(!visit[N][M])
printf("%d step(s) to exit\n",sum);
else
visit[N][M]--,printf("%d step(s) before a loop of %d step(s)\n",visit[N][M],sum-visit[N][M]);
}
return 0;
}