poj 1835 宇航員

http://poj.org/problem?id=1835ios

宇航員
Time Limit: 2000MS   Memory Limit: 30000K
Total Submissions: 4802   Accepted: 2058

Description測試

問題描述: 
  宇航員在太空中迷失了方向,在他的起始位置如今創建一個虛擬xyz座標系,稱爲絕對座標系,宇航員正面的方向爲x軸正方向,頭頂方向爲z軸正方向,則宇航員的初始狀態以下圖所示: 

現對六個方向分別標號,x,y,z正方向分別爲0,1,2,負方向分別爲3,4,5;稱它們爲絕對方向。宇航員在宇宙中只沿着與絕對座標系xyz軸平行的方向行走,可是他不知道本身當前絕對座標和本身面向的絕對方向。 

任務描述: 
  請根據宇航員對本身在相對方向上移動的描述肯定宇航員最終的絕對座標和麪向的絕對方向。對在相對方向上移動的描述及意義以下: 
forward x  向前走x米。 
back x 先轉向後,再走x米。 
left x 先轉向左,再走x米。 
right x 先轉向右,再走x米。 
up x 先面向上,再走x米。 
down x 先面向下,再走x米。 
其中向上和向下以下圖所示: 

Inputspa

第一行一個正整數m,表示測試數據的組數。每組測試數據第一行是一個正整數n(1<=n<=10000)表示宇航員行走的次數,下面n行每行輸入一次相對行走,格式如上所述,其中( 1 <= x <= 10000 爲正整數)。

Outputcode

對於每組輸入數據輸出一行,x y z p, 中間用空格隔開,x y z是宇航員的位置的絕對座標,p是宇航員面向的絕對方向編號(0<=p <=5)。

Sample Inputblog

1
6
left 10
right 11
up 12
down 13
forward 14
back 15

Sample Outputip

23 -10 12 3

Sourceget

 
 
分析:
暴力模擬每種狀態。
 
 
AC代碼:
  1 #include<cstdio>
  2 #include<algorithm>
  3 #include<cstring>
  4 #include<queue>
  5 #include<iostream>
  6 #include<stack>
  7 #include<map>
  8 #include<string>
  9 using namespace std;
 10 int main(){
 11     char ch[20];
 12     int n, t, tcase;
 13     scanf("%d", &tcase);
 14     while(tcase--){
 15         scanf("%d", &n);
 16         int face, head, x, y, z, num;
 17         x = y = z = face = 0;
 18         head = 2;
 19         for(int i = 0; i < n; i++){
 20             scanf("%s%d", ch, &num);
 21             if(ch[0] == 'f'){
 22                 if(face == 0) x += num;
 23                 if(face == 1) y += num;
 24                 if(face == 2) z += num;
 25                 if(face == 3) x -= num;
 26                 if(face == 4) y -= num;
 27                 if(face == 5) z -= num;
 28             }
 29             else if(ch[0] == 'b'){
 30                 face = (face+3)%6;
 31                 if(face == 0) x += num;
 32                 if(face == 1) y += num;
 33                 if(face == 2) z += num;
 34                 if(face == 3) x -= num;
 35                 if(face == 4) y -= num;
 36                 if(face == 5) z -= num;
 37             }
 38             else if(ch[0] == 'l'){
 39                 if(face == 0 && head == 1) face = 2;
 40                 else if(face == 0 && head == 4) face = 5;
 41                 else if(face == 0 && head == 2) face = 4;
 42                 else if(face == 0 && head == 5) face = 1;
 43                 
 44                 else if(face == 1 && head == 0) face = 5;
 45                 else if(face == 1 && head == 3) face = 2;
 46                 else if(face == 1 && head == 2) face = 0;
 47                 else if(face == 1 && head == 5) face = 3;
 48                 
 49                 else if(face == 2 && head == 0) face = 1;
 50                 else if(face == 2 && head == 3) face = 4;
 51                 else if(face == 2 && head == 1) face = 3;
 52                 else if(face == 2 && head == 4) face = 0;
 53                 
 54                 else if(face == 3 && head == 1) face = 5;
 55                 else if(face == 3 && head == 4) face = 2;
 56                 else if(face == 3 && head == 2) face = 1;
 57                 else if(face == 3 && head == 5) face = 4;
 58                 
 59                 else if(face == 4 && head == 0) face = 2;
 60                 else if(face == 4 && head == 3) face = 5;
 61                 else if(face == 4 && head == 2) face = 3;
 62                 else if(face == 4 && head == 5) face = 0;
 63                 
 64                 else if(face == 5 && head == 0) face = 4;
 65                 else if(face == 5 && head == 3) face = 1;
 66                 else if(face == 5 && head == 4) face = 3;
 67                 else if(face == 5 && head == 1) face = 0;
 68                 
 69                 if(face == 0) x += num;
 70                 if(face == 1) y += num;
 71                 if(face == 2) z += num;
 72                 if(face == 3) x -= num;
 73                 if(face == 4) y -= num;
 74                 if(face == 5) z -= num;
 75             }
 76             else if(ch[0] == 'r'){
 77                 if(face == 0 && head == 1) face = 5;
 78                 else if(face == 0 && head == 4) face = 2;
 79                 else if(face == 0 && head == 2) face = 1;
 80                 else if(face == 0 && head == 5) face = 4;
 81                 
 82                 else if(face == 1 && head == 0) face = 2;
 83                 else if(face == 1 && head == 3) face = 5;
 84                 else if(face == 1 && head == 2) face = 3;
 85                 else if(face == 1 && head == 5) face = 0;
 86                 
 87                 else if(face == 2 && head == 0) face = 4;
 88                 else if(face == 2 && head == 3) face = 1;
 89                 else if(face == 2 && head == 1) face = 0;
 90                 else if(face == 2 && head == 4) face = 3;
 91                 
 92                 else if(face == 3 && head == 1) face = 2;
 93                 else if(face == 3 && head == 4) face = 5;
 94                 else if(face == 3 && head == 2) face = 4;
 95                 else if(face == 3 && head == 5) face = 1;
 96                 
 97                 else if(face == 4 && head == 0) face = 5;
 98                 else if(face == 4 && head == 3) face = 2;
 99                 else if(face == 4 && head == 2) face = 0;
100                 else if(face == 4 && head == 5) face = 3;
101                 
102                 else if(face == 5 && head == 0) face = 1;
103                 else if(face == 5 && head == 3) face = 4;
104                 else if(face == 5 && head == 4) face = 0;
105                 else if(face == 5 && head == 1) face = 3;
106                 
107                 if(face == 0) x += num;
108                 if(face == 1) y += num;
109                 if(face == 2) z += num;
110                 if(face == 3) x -= num;
111                 if(face == 4) y -= num;
112                 if(face == 5) z -= num;
113             }
114             else if(ch[0] == 'u'){
115                 t = face;
116                 face = head;
117                 head = (t+3)%6;
118                 if(face == 0) x += num;
119                 if(face == 1) y += num;
120                 if(face == 2) z += num;
121                 if(face == 3) x -= num;
122                 if(face == 4) y -= num;
123                 if(face == 5) z -= num;
124             }
125             else if(ch[0] == 'd'){
126                 t = face;
127                 face = (head+3)%6;
128                 head = t;
129                 if(face == 0) x += num;
130                 if(face == 1) y += num;
131                 if(face == 2) z += num;
132                 if(face == 3) x -= num;
133                 if(face == 4) y -= num;
134                 if(face == 5) z -= num;
135             }
136             //printf("%d %d %d %d %d\n", x, y, z, face, head);
137         }
138         printf("%d %d %d %d\n", x, y, z, face);
139     }
140     return 0;
141 }
相關文章
相關標籤/搜索