HDOJ搜索专题之Robot Motion

水题……

View Code
 1 #include <stdio.h>
 2 #include <string.h>
 3 #define N 11
 4 char g[N][N];
 5 int t[N][N],n,m,k,cnt;
 6 int dx[128],dy[128];
 7 int main()
 8 {
 9   int i,j;
10   dx['E']=0,dx['W']=0;
11   dx['S']=1,dx['N']=-1;
12   dy['E']=1,dy['W']=-1;
13   dy['S']=0,dy['N']=0;
14   while(scanf("%d%d",&n,&m))
15   {
16     if(n==0)  break;
17     scanf("%d",&k);
18     for(i=0;i<n;i++)
19     {
20       getchar();
21       for(j=0;j<m;j++)
22       {
23         scanf("%c",&g[i][j]);
24       }
25     }
26     memset(t,-1,sizeof(t));
27     i=0,j=k-1;
28     cnt=0;
29     while(!(i<0 || j<0 || i>=n || j>=m) && t[i][j]==-1)
30     {
31       int oi=i,oj=j;
32       t[i][j]=cnt++;
33       i+=dx[g[oi][oj]];
34       j+=dy[g[oi][oj]];
35     }
36     if(i<0 || j<0 || i>=n || j>=m)  printf("%d step(s) to exit\n",cnt);
37     else printf("%d step(s) before a loop of %d step(s)\n",t[i][j],cnt-t[i][j]);
38   }
39   return 0;
40 }

 

posted @ 2012-05-11 23:57  BeatLJ  阅读(181)  评论(0编辑  收藏  举报