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 }
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 }