坐标

来源:互联网 发布:tomcat运行php文件 编辑:程序博客网 时间:2024/05/19 05:34


问题描述:
  九胖在太空中迷失了方向,浩姐在他的起始位置建立一个虚拟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米。
其中向上和向下如下图所示:
 

#include<stdio.h>
#include<string.h>
int main()
{
    int k,n,d;
    char a[10];
    scanf("%d",&k);
    while(k--){
        int x=0,y=0,z=0;
        int f=0,r=1,h=2,t;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%s %d",a,&d);
            if(strcmp(a,"left")==0){
                t=f;f=(r+3)%6;r=t;
            }
            if(strcmp(a,"right")==0){
                t=f;f=r;r=(t+3)%6;
            }
            if(strcmp(a,"forward")==0){
                ;
            }
            if(strcmp(a,"back")==0){
                f=(f+3)%6;r=(r+3)%6;
            }
            if(strcmp(a,"up")==0){
                t=f;f=h;h=(t+3)%6;
            }
            if(strcmp(a,"down")==0){
                t=f;f=(h+3)%6;h=t;
            }
            if(f==0) x+=d;
            if(f==1) y+=d;
            if(f==2) z+=d;
            if(f==3) x-=d;
            if(f==4) y-=d;
            if(f==5) z-=d;
        }
        printf("%d %d %d %d\n",x,y,z,f);
    }
    return 0;
}

0 0
原创粉丝点击