superman

聚精会神搞建设 一心一意谋发展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ZOJ 1708 - Robot Motion

Posted on 2008-05-26 15:08 superman 阅读(144) 评论(0)  编辑 收藏 引用 所属分类: ZOJ
 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 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理