POJ1835(几何)

解题思路:这道题考察的是三维空间坐标xyz,必须具有丰富的想象力,像我这种对方向不敏感的人,只好多转转弯,比划比划。只要测试数据能看懂,那么题意就难能理解了。
View Code
 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int m,n;
 8     cin>>m;
 9     while(m--) {
10         cin>>n;
11         int x,y,z,l,p,u;
12         x=y=z=0;//起点(原点)
13         p=0;//当前方向
14         l=4;//左边的方向
15         u=2;//上边的方向
16         char s[10];
17         int i,d,temp;
18         for(i=0;i<n;i++) {
19             cin>>s>>d;
20             switch(s[0]) {//向前的情况是u=u;p=p;l=l;可以省略啊
21             case 'b'://向后
22                 l=(l+3)%6;
23                 p=(p+3)%6;
24                 break;
25             case 'l'://向左 
26                 temp=l;
27                 l=(p+3)%6;
28                 p=temp;
29                 break;
30             case 'r'://向右
31                 temp=p;
32                 p=(l+3)%6;
33                 l=temp;
34                 break;
35             case 'u'://向上
36                 temp=u;
37                 u=(p+3)%6;
38                 p=temp;
39                 break;
40             case 'd'://向下
41                 temp=p;
42                 p=(u+3)%6;
43                 u=temp;
44                 break;
45             }
46             switch(p) { 
47             case 0:
48                 x+=d;    break;
49             case 1:
50                 y+=d;    break;
51             case 2:
52                 z+=d;    break;
53             case 3:
54                 x-=d;    break;
55             case 4:
56                 y-=d;    break;
57             default :
58                 z-=d;
59             }
60         }
61         cout<<x<<' '<<y<<' '<<z<<' '<<p<<endl;
62     }
63     return 0;
64 }
posted @ 2012-02-25 17:53  笑巧  阅读(290)  评论(0编辑  收藏  举报