2489 -- Robot Motion

2489 -- Robot Motion
简单题,第一遍WA错在这组数据上了
1 2 1
EW
应该输出0 step(s) before a loop of 2 step(s)
 1  #include  < stdio.h >
 2  #include  < string .h >
 3 
 4  int  r,c,flag[ 20 ][ 20 ];
 5  char   in [ 20 ][ 20 ];
 6  void  go( int   & x, int   & y)
 7  {
 8       if ( in [x][y]  ==   ' W ' ) y -- ;
 9       else   if ( in [x][y]  ==   ' E ' ) y ++ ;
10       else   if ( in [x][y]  ==   ' N ' ) x -- ;
11       else   if ( in [x][y]  ==   ' S ' ) x ++
12  }
13  bool   out ( int  x, int  y)
14  {
15       if (x  <   0   ||  x  >=  r  ||  y  <   0   ||  y  >=  c)  return   1 ;
16       return   0 ;
17  }
18  int  re( int  sx, int  sy, int  x, int  y)
19  {
20       int  count  =   0 ;
21       while ( 1 )
22      {
23           if (sx  ==  x  &&  sy  ==  y)
24          {
25               return  count;
26          }
27          go(sx,sy);
28          count ++
29      }
30  }
31  int  main()
32  {
33       int  s,x,y,step,temp;
34       int  i,j;
35      
36       while ( 1 )
37      {
38          scanf( " %d%d%d " , & r, & c, & s);
39          getchar();
40           if ( ! &&   ! &&   ! s)  break ;
41           for (i  =   0 ; i  <  r; i ++ )
42          {
43               for (j  =   0 ; j  <  c  +   1 ; j ++ )
44              {
45                  scanf( " %c " , & temp);
46                   if (temp  !=   ' \n ' in [i][j]  =  temp;
47              }
48          }
49               
50          memset(flag, 0 , sizeof (flag));
51          x  =   0
52          y  =  s  -   1 ;
53          step  =   0 ;
54           while ( 1 )
55          {
56              flag[x][y]  =   1 ;
57              go(x,y);
58              step ++ ;
59               if ( out (x,y)) 
60              {
61                  printf( " %d step(s) to exit\n " ,step);
62                   break ;
63              }
64               else   if (flag[x][y])
65              {
66                  temp  =  step;
67                  step  =  re( 0 ,s  -   1 ,x,y);
68                  
69                  printf( " %d step(s) before a loop of %d step(s)\n " ,step,temp  -  step);
70                   break ;
71              }
72          }
73      }
74       return   0 ;
75  }

你可能感兴趣的:(2489 -- Robot Motion)