宇航员
Time Limit: 2000MS   Memory Limit: 30000K
Total Submissions: 7228   Accepted: 3050

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米。 
其中向上和向下如下图所示: 

Input

第一行一个正整数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
 

Solution

一开始思考写法的时候心态崩了QAQ 数一数有24种情况??!!天哪快问问做了的人QAQ

然后他们说其实很好写,网上题解有30行结束的???陷入震惊与沉思....

一开始写定了两个状态,向前和向左,然后发现还不够,在上下走的时候如果不定上下的方向很难转移QAQ

所以再加个向上就行了QAQ(头顶指的方向)

代码不长 然而还是写的心态崩掉QAQAQAQ

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std; LL x, y, z;
int to, lft, up; void change(int w) {
if(to == ) x += w;
if(to == ) y += w;
if(to == ) z += w;
if(to == ) x -= w;
if(to == ) y -= w;
if(to == ) z -= w;
} int main() {
int T;
scanf("%d", &T);
while(T --) {
int n;
scanf("%d", &n);
x = , y = , z = , to = , lft = , up = ;
for(int i = ; i <= n; i ++) {
char s[]; int w;
scanf("%s", s); scanf("%d", &w);
if(s[] == 'f') {
change(w);
} else if(s[] == 'b') {
to = (to + ) % , lft = (lft + ) % ;
change(w);
} else if(s[] == 'l') {
int t = lft; lft = (to + ) % ; to = t;
change(w);
} else if(s[] == 'r') {
int t = lft; lft = to; to = (t + ) % ;
change(w);
} else if(s[] == 'u') {
int t = to; to = up; up = (t + ) % ;
change(w);
} else if(s[] == 'd') {
int t = to; to = (up + ) % ; up = t;
change(w);
}
}
printf("%lld %lld %lld %d\n", x, y, z, to);
}
return ;
}

【POJ】1835:宇航员【模拟】【三维行走】的更多相关文章

  1. poj 1835 宇航员

    http://poj.org/problem?id=1835 宇航员 Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 4802 ...

  2. POJ - 1835 宇航员(模拟题)

    问题描述: 宇航员在太空中迷失了方向,在他的起始位置现在建立一个虚拟xyz坐标系,称为绝对坐标系,宇航员正面的方向为x轴正方向,头顶方向为z轴正方向,则宇航员的初始状态如下图所示: 现对六个方向分别标 ...

  3. 结合 CSS3 & Canvas 模拟人行走的效果

    HTML5 和 CSS3 技术给 Web 带来了新的利器,点燃了 Web 开发人员的激情.所谓只有想不到,没有做不到,的确如此.下面给大家分享一个结合 CSS3 & Canvas 模拟人行走的 ...

  4. POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)

    POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...

  5. [POJ1835]宇航员<模拟>

    链接:http://poj.org/problem?id=1835 题干太长我就不放描述了. 一道大模拟 看着就脑壳疼. 难点可能在于方向的确认上 要明确当前的头朝向和脸朝向,才能进行处理 一个小小坑 ...

  6. POJ 2251 Dungeon Master (三维BFS)

    题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  7. Clumsy Keke【模拟+三维数组】

    Clumsy Keke 题目链接(点击) Problem Description Keke is currently studying engineering drawing courses, and ...

  8. poj 3077Rounders(模拟)

    转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063? viewmode=contents 题目链接:http://po ...

  9. POJ 1068 Parencodings 模拟 难度:0

    http://poj.org/problem?id=1068 #include<cstdio> #include <cstring> using namespace std; ...

随机推荐

  1. python 爬虫简单的demo

    ''' @author :Eric-chen @contact:809512722@qq.com @time :2018/1/3 17:55 @desc :通过爬取http://movie.douba ...

  2. Oracle 11.2.0.4在线(Online mode)打补丁14084247解决WRH$_ACTIVE_SESSION_HISTORY不会自动切割的问题

      安装了Oracle Database Release 11.2.0.4之后,发现WRH$_ACTIVE_SESSION_HISTORY始终不会自动分割删除,   后来才发现需要应用补丁:14084 ...

  3. Jenkins忘记用户名密码

    一.进入C盘.jenkins配置文件中找到config.xml 需要删除一下内容: <useSecurity>true</useSecurity> <authorizat ...

  4. 用Max导出Unity3D使用的FBX文件流程注解(转载)

    http://www.cnblogs.com/wantnon/p/4564522.html 从max导出FBX到Unity,以下环节需要特别注意.1,单位设置   很多人在建模,动画的时候,默认的ma ...

  5. ubuntu12.04安装ruby2.3

    为了搭建github-pages博客,而github-pages后端依赖于ruby,且对版本有严格要求,自己尝试了各种姿势升级ruby2.3无果,最终在查阅了各种资料之后找到一个可行方案. icebu ...

  6. java 内部类的继承

    因为内部类的构造器必须连接到指向其外部类对象的引用. 因为在继承内部类的时候那个指向外部类对象的"秘密的"引用必须被初始化,而在导出类中不再存在可连接的默认对象,要解决这个问题必须 ...

  7. java -D 参数功能解析

    我们都知道在启动tomcat或直接执行java命令的时候可以通过参数-XX等来配置虚拟机的大小,同样,也应该留意到java -Dkey=value的参数.那么这个参数是什么作用呢? 使用案例 其实,在 ...

  8. 可怕的线程上下文类装载器(TCCL)

    在明天的 OSGi 2012 社区活动上,我将以"如何使你的类库在不依赖 OSGi 的情况下进行友好地 OSGi"为主题进行演讲.在演讲中我将会提及 Java 的线程上下文类加载器 ...

  9. R语言学习笔记:使用reshape2包实现整合与重构

    R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...

  10. Apache Kylin安装部署

    0x01 Kylin安装环境 Kylin依赖于hadoop大数据平台,安装部署之前确认,大数据平台已经安装Hadoop, HBase, Hive. 1.1 了解kylin的两种二进制包 预打包的二进制 ...