openjudge 1835 解題報告

吸取其他朋友的建議,開通博客把自己的代碼都記下來,一方面以激勵自己,一方面以交流,歡迎大家指正。


openjudge 1835 宇航員問題

這個題目關鍵應該是想清楚可以用三個變量記錄相對方向,相對方向的值就是絕對方向。

想到這層應該問題就迎刃而解了。


#include <iostream>


using namespace std;
int rev(int a){
    return (3+a)%6;
    }




int main()
{
    //times indicate times to go
    int m,times,distance;//distance indicates how many meters astronaut go each time
    char a[10];
    int x,y,z;
    cin>>m;
    while(m--){
        cin>>times;
        int front=0,right=1,up=2;
        int dis[6]={0};


        while(times--){
            cin>>a;
            cin>>distance;
            x=front;
            y=right;
            z=up;
            switch(a[0]){
                case 'l':right=x;front =rev(y);break;
                case 'r':front=y;right=rev(x);break;
                case 'u':front=z;up=rev(x);break;
                case 'd':front=rev(z);up=x;break;
                case 'b':front=rev(x);right=rev(y);
                default :;
            }
            dis[front]+=distance;
        }
        x=dis[0]-dis[3];
        y=dis[1]-dis[4];
        z=dis[2]-dis[5];
        cout<<x<<" "<<y<<" "<<z<<" "<<front<<endl;
    }
    //cout << "Hello world!" << endl;
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章