这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来。。
仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟着变的。。
然后就要时刻记录。。
方向感和想象力不行就只能在纸上画好久了 。。
无奈了。。
 
Time Limit:2000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u

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


代码
 //注意题意,左手位置和上方位置一直在变啊
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int x,y,z,s,up,left;
struct ss{
char d[];
int num;
};
void der(int num){ switch(s){
case : x += num;break;
case : y += num;break;
case : z += num;break;
case : x -= num;break;
case : y -= num;break;
case : z -= num;break;
}
//printf("x:%d y:%d z:%d s:%d\n",x,y,z,s);
}
void ice(char str[],int num){ if(strcmp(str,"back") == ){
left = (left+) % ;
s = (s+) % ;
}
else if(strcmp(str,"left") == ){
int k = s;
s = left;
left = (k+) % ;
}
else if(strcmp(str,"right") == ){
int k = s;
s = (left+) % ;
left = k;
}
else if(strcmp(str,"up") == ){
int k = up;
up = (s+) % ;
s = k;
}
else if(strcmp(str,"down") == ){
int k = up;
up = s;
s = (k+) % ;
}
der(num);
}
int main(){
int n,m;
ss op[];
scanf("%d",&m);
while(m --){
x = y = z = s = ;
left = ;
up = ;
scanf("%d",&n);
for(int i = ; i <= n; i ++){
scanf("%s%d",op[i].d,&op[i].num);
ice(op[i].d,op[i].num);
}
printf("%d %d %d %d\n",x,y,z,s); }
return ;
}

模拟--poj1835宇航员的故事的更多相关文章

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

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

  2. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  3. 【POJ水题完成表】

    题目 完成情况 poj1000:A+B problem 完成 poj1002:电话上按键对应着数字.现在给n个电话,求排序.相同的归一类 完成 poj1003:求最小的n让1+1/2+1/3+...+ ...

  4. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  5. angular $q promise详解

    前言 通过本文,你大概能清楚angular promise是个啥,$q又是个啥,以及怎么用它.这里咱们先灌输下promise的思想. 下面写的全是废话,一些看着高逼格其实没什么大作用的概念,想知道$q ...

  6. 洛谷 P1086 花生采摘 题解

    P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". ...

  7. hdu---(4515)小Q系列故事——世界上最遥远的距离(模拟题)

    小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)T ...

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

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

  9. HDU-4527 小明系列故事——玩转十滴水 模拟

    题意:就是平时玩的十滴水游戏,游戏者拥有一定的水滴,能够滴在某些位置,如果一个点上的体积超过了4就会爆炸,向四周传递一个小水滴.该题就是要求模拟这个过程. 分析:这里有一个问题就是不能够使用递归来处理 ...

随机推荐

  1. DevExpress 隐藏Ribbon中barbuttonItem的SuperTip(2)

    在form界面增加 toolTipController 工具 然后将 ribbonControl.ToolTipController 的属性设置成 toolTipController toolTipC ...

  2. RecyclerView解密篇(一)

    一.前言 RecyclerView是谷歌V7包下新增的控件,用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视 ...

  3. php学习中——知识点(1)

    php是嵌入式脚本语言(意义也就不言而喻) 标识:<?php ....  ?>         输出:echo "**"; 使用美元符号($)后跟变量名表示变量,区分大 ...

  4. java中scanner类的用法

    在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...

  5. java常见的问题

    1.   接口与抽象类的区别? 抽象类:含有abstract修饰的class即为抽象类abstract类不能创建实例对象,不能有抽象的构造方法或抽象的静态方法,如果子类没有实现抽象父类中的所有 方法, ...

  6. c#_图表之zeGraph

    关于图表控件: http://blog.csdn.net/sgear/article/details/1449025 其中zedGraph的基本方法及属性介绍: http://wenku.baidu. ...

  7. Lintcode 372. O(1)时间复杂度删除链表节点

    ----------------------------------- AC代码: /** * Definition for ListNode. * public class ListNode { * ...

  8. CRC循环冗余校验码总结(转)

    转自 http://blog.csdn.net/u012993936/article/details/45337069 一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclic ...

  9. Linux系统性能优化思路和方法

    #影响Linux性能的CPU.内存.磁盘.网络等因素分析1.系统硬件资源:CPU,多核与超线程消耗CPU的业务:动态WEB服务,Mail服务器2.内存:物理内存与swap的取舍,64操作系统消耗内存的 ...

  10. 《Scalable IO in Java》笔记

    Scalable IO in Java http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf 基本上所有的网络处理程序都有以下基本的处理过程:Read reque ...