http://poj.org/problem?id=1835
题意就是一个宇航员在太空中沿三维坐标系行走,我写的是最无脑的一种模拟,就是6个方向X4个面部方向X6种行为,一共144种情况去判断。
#include<iostream>
using namespace std;
int dir;
int x,y,z;
int fac;
void mov(char a[],int dis)
{
if(dir==0)
{
if(fac==1)
{
if(a[0]=='l')
{
dir=4;
fac=1;
y-=dis;
}
if(a[0]=='r')
{
dir=1;
fac=1;
y+=dis;
}
if(a[0]=='u')
{
dir=2;
fac=3;
z+=dis;
}
if(a[0]=='d')
{
dir=5;
fac=1;
z-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=1;
x+=dis;
}
if(a[0]=='b')
{
dir=3;
fac=1;
x-=dis;
}
}
else if(fac==2)
{
if(a[0]=='l')
{
dir=2;
fac=4;
z+=dis;
}
if(a[0]=='r')
{
dir=5;
fac=2;
z-=dis;
}
if(a[0]=='u')
{
dir=1;
fac=2;
y+=dis;
}
if(a[0]=='d')
{
dir=4;
fac=2;
y-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x+=dis;
}
if(a[0]=='b')
{
dir=3;
fac=4;
x-=dis;
}
}
else if(fac==3)
{
if(a[0]=='l')
{
dir=1;
fac=3;
y+=dis;
}
if(a[0]=='r')
{
dir=4;
fac=3;
y-=dis;
}
if(a[0]=='u')
{
dir=5;
fac=3;
z-=dis;
}
if(a[0]=='d')
{
dir=2;
fac=1;
z+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x+=dis;
}
if(a[0]=='b')
{
dir=3;
fac=3;
x-=dis;
}
}
else if(fac==4)
{
if(a[0]=='l')
{
dir=5;
fac=4;
z-=dis;
}
if(a[0]=='r')
{
dir=2;
fac=2;
z+=dis;
}
if(a[0]=='u')
{
dir=4;
fac=4;
y-=dis;
}
if(a[0]=='d')
{
dir=1;
fac=4;
y+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x+=dis;
}
if(a[0]=='b')
{
dir=3;
fac=2;
x-=dis;
}
}
}
else if(dir==1)
{
if(fac==1)
{
if(a[0]=='l')
{
dir=0;
fac=1;
x+=dis;
}
if(a[0]=='r')
{
dir=3;
fac=1;
x-=dis;
}
if(a[0]=='u')
{
dir=2;
fac=2;
z+=dis;
}
if(a[0]=='d')
{
dir=5;
fac=2;
z-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y+=dis;
}
if(a[0]=='b')
{
dir=4;
fac=1;
y-=dis;
}
}
else if(fac==2)
{
if(a[0]=='l')
{
dir=2;
fac=3;
z+=dis;
}
if(a[0]=='r')
{
dir=5;
fac=3;
z-=dis;
}
if(a[0]=='u')
{
dir=3;
fac=2;
x-=dis;
}
if(a[0]=='d')
{
dir=0;
fac=2;
x+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y+=dis;
}
if(a[0]=='b')
{
dir=4;
fac=4;
y-=dis;
}
}
else if(fac==3)
{
if(a[0]=='l')
{
dir=3;
fac=3;
x-=dis;
}
if(a[0]=='r')
{
dir=0;
fac=3;
x+=dis;
}
if(a[0]=='u')
{
dir=5;
fac=4;
z-=dis;
}
if(a[0]=='d')
{
dir=2;
fac=4;
z+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y+=dis;
}
if(a[0]=='b')
{
dir=4;
fac=3;
y-=dis;
}
}
else if(fac==4)
{
if(a[0]=='l')
{
dir=5;
fac=1;
z-=dis;
}
if(a[0]=='r')
{
dir=2;
fac=1;
z+=dis;
}
if(a[0]=='u')
{
dir=0;
fac=4;
x+=dis;
}
if(a[0]=='d')
{
dir=3;
fac=4;
x-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y+=dis;
}
if(a[0]=='b')
{
dir=4;
fac=2;
y-=dis;
}
}
}
else if(dir==2)
{
if(fac==1)
{
if(a[0]=='l')
{
dir=1;
fac=4;
y+=dis;
}
if(a[0]=='r')
{
dir=4;
fac=2;
y-=dis;
}
if(a[0]=='u')
{
dir=0;
fac=3;
x+=dis;
}
if(a[0]=='d')
{
dir=3;
fac=1;
x-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z+=dis;
}
if(a[0]=='b')
{
dir=5;
fac=1;
z-=dis;
}
}
else if(fac==2)
{
if(a[0]=='l')
{
dir=0;
fac=4;
x+=dis;
}
if(a[0]=='r')
{
dir=3;
fac=2;
x-=dis;
}
if(a[0]=='u')
{
dir=4;
fac=3;
y-=dis;
}
if(a[0]=='d')
{
dir=1;
fac=1;
y+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z+=dis;
}
if(a[0]=='b')
{
dir=5;
fac=4;
z-=dis;
}
}
else if(fac==3)
{
if(a[0]=='l')
{
dir=4;
fac=4;
y-=dis;
}
if(a[0]=='r')
{
dir=1;
fac=2;
y+=dis;
}
if(a[0]=='u')
{
dir=3;
fac=3;
x-=dis;
}
if(a[0]=='d')
{
dir=0;
fac=1;
x+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z+=dis;
}
if(a[0]=='b')
{
dir=5;
fac=3;
z-=dis;
}
}
else if(fac==4)
{
if(a[0]=='l')
{
dir=3;
fac=4;
x-=dis;
}
if(a[0]=='r')
{
dir=0;
fac=2;
x+=dis;
}
if(a[0]=='u')
{
dir=1;
fac=3;
y+=dis;
}
if(a[0]=='d')
{
dir=4;
fac=1;
y-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z+=dis;
}
if(a[0]=='b')
{
dir=5;
fac=2;
z-=dis;
}
}
}
else if(dir==3)
{
if(fac==1)
{
if(a[0]=='l')
{
dir=1;
fac=1;
y+=dis;
}
if(a[0]=='r')
{
dir=4;
fac=1;
y-=dis;
}
if(a[0]=='u')
{
dir=2;
fac=1;
z+=dis;
}
if(a[0]=='d')
{
dir=5;
fac=3;
z-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x-=dis;
}
if(a[0]=='b')
{
dir=0;
fac=1;
x+=dis;
}
}
else if(fac==2)
{
if(a[0]=='l')
{
dir=2;
fac=2;
z+=dis;
}
if(a[0]=='r')
{
dir=5;
fac=4;
z-=dis;
}
if(a[0]=='u')
{
dir=4;
fac=2;
y-=dis;
}
if(a[0]=='d')
{
dir=1;
fac=2;
y+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x-=dis;
}
if(a[0]=='b')
{
dir=0;
fac=4;
x+=dis;
}
}
else if(fac==3)
{
if(a[0]=='l')
{
dir=4;
fac=3;
y-=dis;
}
if(a[0]=='r')
{
dir=1;
fac=3;
y+=dis;
}
if(a[0]=='u')
{
dir=5;
fac=1;
z-=dis;
}
if(a[0]=='d')
{
dir=2;
fac=3;
z+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x-=dis;
}
if(a[0]=='b')
{
dir=0;
fac=3;
x+=dis;
}
}
else if(fac==4)
{
if(a[0]=='l')
{
dir=5;
fac=2;
z-=dis;
}
if(a[0]=='r')
{
dir=2;
fac=4;
z+=dis;
}
if(a[0]=='u')
{
dir=1;
fac=4;
y+=dis;
}
if(a[0]=='d')
{
dir=4;
fac=4;
y-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
x-=dis;
}
if(a[0]=='b')
{
dir=0;
fac=2;
x+=dis;
}
}
}
else if(dir==4)
{
if(fac==1)
{
if(a[0]=='l')
{
dir=3;
fac=1;
x-=dis;
}
if(a[0]=='r')
{
dir=0;
fac=1;
x+=dis;
}
if(a[0]=='u')
{
dir=2;
fac=4;
z+=dis;
}
if(a[0]=='d')
{
dir=5;
fac=4;
z-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y-=dis;
}
if(a[0]=='b')
{
dir=1;
fac=1;
y+=dis;
}
}
else if(fac==2)
{
if(a[0]=='l')
{
dir=2;
fac=1;
z+=dis;
}
if(a[0]=='r')
{
dir=5;
fac=1;
z-=dis;
}
if(a[0]=='u')
{
dir=0;
fac=2;
x+=dis;
}
if(a[0]=='d')
{
dir=3;
fac=2;
x-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y-=dis;
}
if(a[0]=='b')
{
dir=1;
fac=4;
y+=dis;
}
}
else if(fac==3)
{
if(a[0]=='l')
{
dir=0;
fac=3;
x+=dis;
}
if(a[0]=='r')
{
dir=3;
fac=3;
x-=dis;
}
if(a[0]=='u')
{
dir=5;
fac=2;
z-=dis;
}
if(a[0]=='d')
{
dir=2;
fac=2;
z+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y-=dis;
}
if(a[0]=='b')
{
dir=1;
fac=3;
y+=dis;
}
}
else if(fac==4)
{
if(a[0]=='l')
{
dir=5;
fac=3;
z-=dis;
}
if(a[0]=='r')
{
dir=2;
fac=3;
z+=dis;
}
if(a[0]=='u')
{
dir=3;
fac=4;
x-=dis;
}
if(a[0]=='d')
{
dir=0;
fac=4;
x+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
y-=dis;
}
if(a[0]=='b')
{
dir=1;
fac=2;
y+=dis;
}
}
}
else if(dir==5)
{
if(fac==1)
{
if(a[0]=='l')
{
dir=4;
fac=2;
y-=dis;
}
if(a[0]=='r')
{
dir=1;
fac=4;
y+=dis;
}
if(a[0]=='u')
{
dir=0;
fac=1;
x+=dis;
}
if(a[0]=='d')
{
dir=3;
fac=3;
x-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z-=dis;
}
if(a[0]=='b')
{
dir=2;
fac=1;
z+=dis;
}
}
else if(fac==2)
{
if(a[0]=='l')
{
dir=0;
fac=2;
x+=dis;
}
if(a[0]=='r')
{
dir=3;
fac=4;
x-=dis;
}
if(a[0]=='u')
{
dir=1;
fac=1;
y+=dis;
}
if(a[0]=='d')
{
dir=4;
fac=3;
y-=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z-=dis;
}
if(a[0]=='b')
{
dir=2;
fac=4;
z+=dis;
}
}
else if(fac==3)
{
if(a[0]=='l')
{
dir=1;
fac=2;
y+=dis;
}
if(a[0]=='r')
{
dir=4;
fac=4;
y-=dis;
}
if(a[0]=='u')
{
dir=3;
fac=1;
x-=dis;
}
if(a[0]=='d')
{
dir=0;
fac=3;
x+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z-=dis;
}
if(a[0]=='b')
{
dir=2;
fac=3;
z+=dis;
}
}
else if(fac==4)
{
if(a[0]=='l')
{
dir=3;
fac=2;
x-=dis;
}
if(a[0]=='r')
{
dir=0;
fac=4;
x+=dis;
}
if(a[0]=='u')
{
dir=4;
fac=1;
y-=dis;
}
if(a[0]=='d')
{
dir=1;
fac=3;
y+=dis;
}
if(a[0]=='f')
{
dir=dir;
fac=fac;
z-=dis;
}
if(a[0]=='b')
{
dir=2;
fac=2;
z+=dis;
}
}
}
}
int main(){
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
x=y=z=0;
dir=0;
fac=1;
char a[11];
int dis;
for(int i=1;i<=n;i++)
{
cin>>a>>dis;
mov(a,dis);
}
cout<<x<<" "<<y<<" "<<z<<" "<<dir<<endl;
}
return 0;
}