POJ-1835 宇航员 空间方向模拟+打表

时间:2020-02-03 18:03:15   收藏:0   阅读:75

1835:宇航员

#include <iostream>
#include<bits/stdc++.h>
#define each(a,b,c) for(int a=b;a<=c;a++)
#define de(x) cout<<#x<<" "<<(x)<<endl
using namespace std;

const int maxn=100+5;
const int inf=0x3f3f3f3f;
int turn_left[6][6]={{1,5,1,1,2,4},{2,1,3,5,1,0},{4,0,1,1,3,1},{1,2,4,1,5,1},{5,1,0,2,1,3},{1,3,1,4,0,1}
};//头部 面部
int turn_back(int x){return (x+3)%6;}
int x,y,z,step;
int Forward(int face)
{
    switch(face)
    {
        case 0:x+=step;break;
        case 1:y+=step;break;
        case 2:z+=step;break;
        case 3:x-=step;break;
        case 4:y-=step;break;
        case 5:z-=step;break;
    }
}
/*
1
6
left 10
right 11
up 12
down 13
forward 14
back 15
*/
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        x=y=z=0;
        int head=2;
        int face=0;
        int k;
        cin>>k;
        char ord[10];
        int temp;
        while(k--)
        {
            scanf("%s %d",ord,&step);
            switch(ord[0])
            {
                case 'f':Forward(face);break;
                case 'b':face=turn_back(face);Forward(face);break;
                case 'l':face=turn_left[head][face];Forward(face);break;
                case 'r':face=turn_left[head][face];face=turn_back(face);Forward(face);break;
                case 'u':temp=face;face=head;head=turn_back(temp);Forward(face);break;
                case 'd':temp=head;head=face;face=turn_back(temp);Forward(face);

            }

        }
        printf("%d %d %d %d\n",x,y,z,face);
    }
}

原文:https://www.cnblogs.com/Tony100K/p/12256445.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!