ZOJ 1708 - Robot Motion

 1  /*  Accepted 1708 C++ 00:00.00 836K  */
 2  #include  < iostream >
 3 
 4  using   namespace  std;
 5 
 6  int  main()
 7  {
 8       int  n, m, start;
 9       while (cin  >>  n  >>  m  >>  start)
10      {
11           if (n  ==   0   &&  m  ==   0   &&  start  ==   0 )
12               break ;
13          
14           char  map[ 10 ][ 10 ];
15           for ( int  i  =   0 ; i  <  n; i ++ )
16               for ( int  j  =   0 ; j  <  m; j ++ )
17                  cin  >>  map[i][j];
18          
19           int  sx, sy;
20           for ( int  i  =   0 ; i  <  n; i ++ )
21               for ( int  j  =   0 ; j  <  m; j ++ )
22              {
23                  start -- ;
24                   if (start  ==   0 )
25                  {
26                      sx  =  i, sy  =  j;  break ;
27                  }
28              }
29          
30           int  cnt[ 10 ][ 10 =  {  0  };
31          cnt[sx][sy]  =   1 ;
32          
33           while ( true )
34          {
35               int  tx  =  sx;
36               int  ty  =  sy;
37              
38               switch (map[sx][sy])
39              {
40                   case   ' N '  : tx -- break ;
41                   case   ' S '  : tx ++ break ;
42                   case   ' W '  : ty -- break ;
43                   case   ' E '  : ty ++ break ;
44              }
45               if (tx  <   0   ||  tx  ==  n  ||  ty  <   0   ||  ty  ==  m)
46              {
47                  cout  <<  cnt[sx][sy]  <<   "  step(s) to exit "   <<  endl;
48                   break ;
49              }
50               if (cnt[tx][ty])
51              {
52                  cout  <<  cnt[tx][ty]  -   1   <<   "  step(s) before a loop of  "
53                        <<  cnt[sx][sy]  -  cnt[tx][ty]  +   1    <<   "  step(s) "   <<  endl;
54                   break ;
55              }
56              cnt[tx][ty]  =  cnt[sx][sy]  +   1 ;
57              sx  =  tx, sy  =  ty;
58          }
59      }
60      
61       return   0 ;
62  }
63 

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