POJ 1835
来源:互联网 发布:impress.js mac 下载 编辑:程序博客网 时间:2024/05/05 12:32
宇航员
Time Limit: 2000MS Memory Limit: 30000KTotal 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米。
其中向上和向下如下图所示:
宇航员在太空中迷失了方向,在他的起始位置现在建立一个虚拟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米。
其中向上和向下如下图所示:
Input
第一行一个正整数m,表示测试数据的组数。每组测试数据第一行是一个正整数n(1<=n<=10000)表示宇航员行走的次数,下面n行每行输入一次相对行走,格式如上所述,其中( 1 <= x <= 10000 为正整数)。
Output
对于每组输入数据输出一行,x y z p, 中间用空格隔开,x y z是宇航员的位置的绝对坐标,p是宇航员面向的绝对方向编号(0<=p <=5)。
Sample Input
16left 10right 11up 12down 13forward 14back 15
Sample Output
23 -10 12 3
Source
qinlu@POJ
记录下开始的上下左右前后的绝对方向,保存在一个数组中。之后每一次动作,都可以更新这个数组,用自身更新。
即模拟一下,思考一下转身之后,之前的上变成了现在的什么,之前的下变成了现在的什么。
#include <iostream>#include <iomanip>#include <cstdio>#include <string.h>#include <algorithm>#include <stack>#include <cmath>#include <string>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){ int temp[7]; if(!strcmp(s, "left")){ temp[1]=now[5]; temp[2]=now[6]; temp[3]=now[3]; temp[4]=now[4]; temp[5]=now[2]; temp[6]=now[1]; } else if(!strcmp(s, "right")){ temp[1]=now[6]; temp[2]=now[5]; temp[3]=now[3]; temp[4]=now[4]; temp[5]=now[1]; temp[6]=now[2]; } else if(!strcmp(s, "up")){ temp[1]=now[3]; temp[2]=now[4]; temp[3]=now[2]; temp[4]=now[1]; temp[5]=now[5]; temp[6]=now[6]; } else if(!strcmp(s, "down")){ temp[1]=now[4]; temp[2]=now[3]; temp[3]=now[1]; temp[4]=now[2]; temp[5]=now[5]; temp[6]=now[6]; } else if(!strcmp(s, "forward")){ temp[1]=now[1]; temp[2]=now[2]; temp[3]=now[3]; temp[4]=now[4]; temp[5]=now[5]; temp[6]=now[6]; } else if(!strcmp(s, "back")){ temp[1]=now[2]; temp[2]=now[1]; temp[3]=now[3]; temp[4]=now[4]; temp[5]=now[6]; temp[6]=now[5]; } for(int i=1;i<=6;i++){ now[i]=temp[i]; } int a=now[1]; switch (a) { case 0: x+=xx; break; case 1: y+=xx; break; case 2: z+=xx; break; case 3: x-=xx; break; case 4: y-=xx; break; case 5: z-=xx; break; default: break; }}int main(){ int T; for(scanf("%d",&T);T--;){ int n; x=z=y=0; scanf("%d",&n); now[1]=0,now[2]=3,now[3]=2,now[4]=5,now[5]=4,now[6]=1; for(int i=1;i<=n;i++){ char s[11]; int x; scanf("%s %d",s,&x); doit(s,x); } printf("%d %d %d %d\n",x,y,z,now[1]); } return 0;}
阅读全文
0 0
- POJ 1835
- POJ 1835
- poj 1835 宇航员
- poj 1835 宇航员
- POJ 1835 宇航员
- POJ 1835 大模拟
- poj-1835-Exponentiation
- Exponentiation(POJ-1835)
- poj 1835 宇航员
- POJ 1835 宇航员
- POJ 1835 宇航员
- POJ 1835宇航员
- POJ - 1835 - 模拟
- POJ 1835 宇航员 中文
- poj-1835-宇航员
- 宇航员 POJ 1835
- poj 1835 宇航员
- POJ
- react native 之自定义顶部导航栏,实现标题居中可控
- 机器学习-梯度下降法实现线性回归
- 把字符串转换为整数
- vue的template标签
- 使用while循环实现xyz+yzz=532
- POJ 1835
- 浅说深度学习(2):简史
- **//java之jdbc+DAO实现学生信息的增删改**
- Spring技术内幕1
- git lfs 上传大于100MB文件
- IDEA进行springmvc项目开发三(springboot搭建简单springmvc)
- 数学之美--读书笔记(2--5章)
- 精确搜索
- 游戏引擎架构(1) 介绍