POJ - 1835(找规律)

/*
    POJ - 1835
    一个宇航员,告诉你他怎么走了之后
    问最后他朝向哪儿,坐标多少


    单纯的模拟
    模拟的时候
    记录下 前、后、左、右、上、下就行
    (其实记录前左好像就行了)
*/
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string>
#define pi 3.1415927
#define ll long long


using namespace std;


struct node
{
    int qian;
    int hou;
    int zuo;
    int you;
    int shang;
    int xia;
} f;
void back()
{
    swap(f.qian,f.hou);
    swap(f.zuo,f.you);
}
void right()
{
    int a;
    a=f.qian;
    f.qian=f.you;
    f.you=f.hou;
    f.hou=f.zuo;
    f.zuo=a;
}
void left()
{
    int a;
    a=f.qian;
    f.qian=f.zuo;
    f.zuo=f.hou;
    f.hou=f.you;
    f.you=a;
}
void up()
{
    int a;
    a=f.qian;
    f.qian=f.shang;
    f.shang=f.hou;
    f.hou=f.xia;
    f.xia=a;
}
void down()
{
    int a;
    a=f.qian;
    f.qian=f.xia;
    f.xia=f.hou;
    f.hou=f.shang;
    f.shang=a;
}
void forward()
{


}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int x=0,y=0,z=0;
        f.qian=0;
        f.hou=3;
        f.zuo=4;
        f.you=1;
        f.shang=2;
        f.xia=5;
        while(n--)
        {
            string s;
            int cnt;
            cin>>s;
            scanf("%d",&cnt);
            if(s=="left")   left();
            if(s=="right")   right();
            if(s=="forward")   forward();
            if(s=="back")   back();
            if(s=="up")   up();
            if(s=="down")   down();
            if(f.qian==0)
                x+=cnt;
            if(f.qian==1)
                y+=cnt;
            if(f.qian==2)
                z+=cnt;
            if(f.qian==3)
                x-=cnt;
            if(f.qian==4)
                y-=cnt;
            if(f.qian==5)
                z-=cnt;
        }
        printf("%d %d %d %d\n",x,y,z,f.qian);


    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值