POJ 1835 太空人 模擬

2021-08-11 03:27:47 字數 1965 閱讀 1621

太空人

time limit:2000ms

memory limit:30000k

total submissions:6542

accepted:2805

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

6left 10

right 11

up 12

down 13

forward 14

back 15

sample output

23 -10 12 3
source

qinlu@poj

point:

記錄下開始的上下左右前後的絕對方向,儲存在乙個陣列中。之後每一次動作,都可以更新這個陣列,用自身更新。

即模擬一下,思考一下轉身之後,之前的上變成了現在的什麼,之前的下變成了現在的什麼。

#include #include #include #include #include #include #include #include using namespace std;

const int maxn = 33;

//1 前。2 後。 3上4下 5左 6右

int now[10];

int x,y,z;

void doit(char s,int xx)

else if(!strcmp(s, "right"))

else if(!strcmp(s, "up"))

else if(!strcmp(s, "down"))

else if(!strcmp(s, "forward"))

else if(!strcmp(s, "back"))

for(int i=1;i<=6;i++)

int a=now[1];

switch (a)

}int main()

printf("%d %d %d %d\n",x,y,z,now[1]);

}return 0;

}

太空飛行計畫

太空飛行計畫 題目描述 輸入格式 2209.in 檔案第1行有2 個正整數m和 n。m是實驗數,n是儀器數。接下來的 m行,每行是乙個實驗的有關資料。第乙個數贊助商同意支付該實驗的費用 接著是該實驗需要用到的若干儀器的編號。最後一行的 n個數是配置每個儀器的費用。1 n,m 50 輸出格式 2209...

太空飛行計畫問題

w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合 e 和進行這些實驗需要使用的全部儀器的集合i 實驗 ej需要用到的儀器是i的子集j i。配置儀器ik的費用 為ck美元。實驗ej的贊助商已同意為該實驗結果支付pj美元。w教...

太空飛行計畫問題

網路流最小費用問題 一開始看這個人的部落格 寫了4天了,還是沒能寫出自己的 後面面還有在這個oj上ac了的 照著這個人的 打,還是沒能想明白。這個 和這個oj上的不同,是簡化問題了的。只求最大收益 照著打的 include include include include define inf 999...