poj 1835 宇航员

xiaoxiao2021-02-28  11

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; }

转载请注明原文地址: https://www.6miu.com/read-1900029.html

最新回复(0)