zoukankan      html  css  js  c++  java
  • poj 1815

    模拟,标记六个方向的位置为0,1,2。。。,然后记录当前位置六种走法所要朝向的方向,而我们所需要的就是每个位置的这几个方向,很显然,其中的front所得到的方向就是当前所朝向的方向。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    struct node
    {
        int front,back,left,right,up,down;
    };
    node b_ch(node op)
    {
        node tem;
        tem.front=op.back;
        tem.back=op.front;
        tem.left=op.right;
        tem.right=op.left;
        tem.up=op.up;
        tem.down=op.down;
        return tem;
    }
    node l_ch(node op)
    {
        node tem;
        tem.front=op.left;
        tem.back=op.right;
        tem.left=op.back;
        tem.right=op.front;
        tem.up=op.up;
        tem.down=op.down;
        return tem;
    }
    node r_ch(node op)
    {
        node tem;
        tem.front=op.right;
        tem.back=op.left;
        tem.left=op.front;
        tem.right=op.back;
        tem.up=op.up;
        tem.down=op.down;
        return tem;
    }
    node u_ch(node op)
    {
        node tem;
        tem.front=op.up;
        tem.back=op.down;
        tem.left=op.left;
        tem.right=op.right;
        tem.up=op.back;
        tem.down=op.front;
        return tem;
    }
    node d_ch(node op)
    {
        node tem;
        tem.front=op.down;
        tem.back=op.up;
        tem.left=op.left;
        tem.right=op.right;
        tem.up=op.front;
        tem.down=op.back;
        return tem;
    }
    int main()
    {
        int  m;
        cin>>m;
        while(m--)
        {
            int n;
            scanf("%d",&n);
            char op[30];
            int i,dis;
            node td;
            td.front=0,td.back=3,td.left=4,td.right=1,td.up=2,td.down=5;
            int x=0,y=0,z=0;
            for(i=0;i<n;i++)
            {
                scanf("%s %d",op,&dis);
                if(strcmp(op,"forward")==0)
                {
                    td=td;
                }
                else if(strcmp(op,"back")==0)  {td=b_ch(td);}
                 else if(strcmp(op,"left")==0) {td=l_ch(td);}
                else if(strcmp(op,"right")==0) {td=r_ch(td);}
                else if(strcmp(op,"up")==0) {td=u_ch(td);}
                else {td=d_ch(td);}
                if(td.front==0) {x+=dis;}
                else if(td.front==1) {y+=dis;}
                else if(td.front==2) {z+=dis;}
                else if(td.front==3) {x-=dis;}
                else if(td.front==4) {y-=dis;}
                else  {z-=dis;}
            }
            printf("%d %d %d %d\n",x,y,z,td.front );
        }
        return 0;
    }
  • 相关阅读:
    WeakReference(弱引用)
    男人怎么挑选女人
    同步方法和异步方法
    常指针与指针常量的区别(转帖)
    关于WebService的一些注意事项
    ASP.Net缓存技术
    关于GridView手动绑定的一段代码,一切尽在不言中
    基本三层架构的一些代码
    写给自己看的关于DataList的和RePeater
    ASP.Net绑定数据源
  • 原文地址:https://www.cnblogs.com/lj030/p/3087899.html
Copyright © 2011-2022 走看看