#include <iostream>
#define M 15
using namespace std;// n s w e
int move[4][2] = {-1,0,1,0,0,-1,0,1};
int map[M][M], s[M][M];
int n, m, i, j, k, l;
char c, ch[] = "NSWE";
int f(char c)
{
for (int i=0;i<4;++i)
if (ch[i] == c) return i;
}
int main()
{
while (scanf("%d %d", &n, &m), n||m)
{
scanf("%d\n", &l);
for (i=1;i<=n;++i)
{
for (j=1;j<=m;++j)
{
scanf("%c", &c);
map[i][j] = f(c);
}
getchar();
}
memset(s, 0, sizeof(s));
i = k = 1, j = l;
s[i][j] = k;
while (1)
{
j += move[map[i][j]][1];
i += move[map[i][l]][0];
l = j;
if (1>i || i>n || 1>j || j>m)
{
printf("%d step(s) to exit\n", k);
break;
}
if (s[i][j]!=0)
{
printf("%d step(s) before a loop of %d step(s)\n", s[i][j]-1, k-s[i][j]+1);
break;
}
s[i][j] = ++k;
}
}
return 0;
}
hdu 1035
最新推荐文章于 2019-08-22 17:40:11 发布