太空飛行員time limit:2000ms
memory limit:30000k
total submissions:5997
accepted:2618
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公尺。
其中向上和向下如下圖所示:
第一行乙個正整數m,表示測試資料的組數。每組測試資料第一行是乙個正整數n(1<=n<=10000)表示太空飛行員行走的次數,下面n行每行輸入一次相對行走,格式如上所述,其中( 1 <= x <= 10000 為正整數)。
output
對於每組輸入資料輸出一行,x y z p, 中間用空格隔開,x y z是太空飛行員的位置的絕對座標,p是太空飛行員面向的絕對方向編號(0<=p <=5)。
sample input
1sample output6left 10
right 11
up 12
down 13
forward 14
back 15
23 -10 12 3source
qinlu@poj
本來想著直接模擬就能寫,但那是2維,3維的變化太複雜,根本模擬不完,無奈看題解,只改變座標系就行了,每一次轉彎,直接讓座標系變化90度
比如從前,向左轉彎,直接把座標系整體向左旋轉90度,最後判斷一下與初始狀態的關係即可
#include #include#include#include#include#include#define ll long long
using namespace std;
struct node
;node f;
char s1[10]="left";
char s2[10]="right";
char s3[10]="forward";
char s4[10]="back";
char s5[10]="up";
char s6[10]="down";
void left()
void right()
void forward()
void back()
void up()
void down()
int main()
printf("%d %d %d %d\n",x,y,z,f.qian);}}
poj 1835 太空飛行員(模擬)
description 問題描述 太空飛行員在太空中迷失了方向,在他的起始位置現在建立乙個虛擬xyz座標系,稱為絕對座標系,太空飛行員正面的方向為x軸正方向,頭頂方向為z軸正方向,則太空飛行員的初始狀態如下圖所示 現對六個方向分別標號,x,y,z正方向分別為0,1,2,負方向分別為3,4,5 稱它們...
POJ1835 太空飛行員《模擬》
題幹太長我就不放描述了。一道大模擬 看著就腦殼疼。難點可能在於方向的確認上 要明確當前的頭朝向和臉朝向,才能進行處理 乙個小小坑可能算是up和down吧,不看圖可能就覺得是直上直下了 裡面所有的方向都是相對於當前臉的朝向的。然後就是0對3 1對4 2對5 取相反可以 3再 6 然後就是一堆if ca...
第6章練習題 1 太空飛行員 1835
本題思路 採用變數f l u 表示forward left up三個方向,f 可以取值0,3,l 可以取值1,4,u 取值 2,5 當太空飛行員的絕對方向發生變化時,三個變數的變化規律如下所示 forward left upforward 不變不變 不變back forward left 不變lef...