poj 1835 太空飛行員(模擬)

2021-07-29 17:58:57 字數 1520 閱讀 5162

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

1 6

left 10

right 11

up 12

down 13

forward 14

back 15

sample output

23 -10 12 3

分析:模擬題,

發現x,y,z的正方向分別為0,1,2,負方向分別為3,4,5

因此正反方向轉換可以用(x+3)%6來表示

再來看向左轉這個操作,如果單單只是知道朝向的話,很明顯並不能確定該朝哪個方向,所以需要通過head,forward,left三個量來確定人的絕對位置;

再看一下轉向後的方向,不管絕對座標在**,每次絕對方向的變化只和轉換的方向有關,這裡舉個例子:比如說向左轉,up不變,forward變為原來的left,left變為原來(forward+3)%6即foward的反方向(其他的類似)

**:

#include

int x,y,z,step;

void go(int dir)

}int main()

go(dir);

}printf("%d %d %d %d\n",x,y,z,dir);

}return

0;}

POJ1835 太空飛行員《模擬》

題幹太長我就不放描述了。一道大模擬 看著就腦殼疼。難點可能在於方向的確認上 要明確當前的頭朝向和臉朝向,才能進行處理 乙個小小坑可能算是up和down吧,不看圖可能就覺得是直上直下了 裡面所有的方向都是相對於當前臉的朝向的。然後就是0對3 1對4 2對5 取相反可以 3再 6 然後就是一堆if ca...

POJ1835 太空飛行員(思路)

太空飛行員time limit 2000ms memory limit 30000k total submissions 5997 accepted 2618 description 問題描述 太空飛行員在太空中迷失了方向,在他的起始位置現在建立乙個虛擬xyz座標系,稱為絕對座標系,太空飛行員正面的...

POJ 1835 太空人 模擬

太空人 time limit 2000ms memory limit 30000k total submissions 6542 accepted 2805 description 問題描述 太空人在太空中迷失了方向,在他的起始位置現在建立乙個虛擬xyz座標系,稱為絕對座標系,太空人正面的方向為x軸...