http://poj.org/problem?id=1573
简单模拟。
#include <stdio.h>
#include <string.h>
int main()
{
int m,n,t,bit[11][11],i,j,k,ans;
char data[11][11];
while((~scanf("%d %d %d",&m,&n,&t))&&m&&n&&t)
{
memset(bit,0,sizeof(bit));
ans=0;
for(k=1;k<=m;k++)
scanf("%s",data[k]);
i=1;j=t-1;
while(1)
{
++ans;
if(bit[i][j])
{
printf("%d step(s) before a loop of %d step(s)\n",bit[i][j]-1,ans-bit[i][j]);
break;
}
else
bit[i][j]=ans;//记录步骤数
switch(data[i][j])
{
case 'N':i--;break;
case 'S':i++;break;
case 'W':j--;break;
case 'E':j++;break;
}
if(i<1||j<0||i>m||j>=n)
{
printf("%d step(s) to exit\n",ans);
break;
}
}
}
return 0;
}