[poj]poj2632(模拟)
Posted xutianshu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[poj]poj2632(模拟)相关的知识,希望对你有一定的参考价值。
题意:模拟
模拟就行
#include<iostream> #include<cstdio> #include<stack> using namespace std; const int N=1e2+7; struct robot{ int id,x,y,to; }; const int dx[4]={0,1,0,-1}; const int dy[4]={1,0,-1,0}; int T,n,m,A,B,flag; int map[N][N]; robot rbt[N]; void init(){ for(int i=0;i<=B+1;i++)map[0][i]=map[A+1][i]=0; for(int i=0;i<=A+1;i++)map[i][0]=map[i][B+1]=0; for(int i=1;i<=n;i++)map[rbt[i].x][rbt[i].y]=0; flag=0; cin>>A>>B>>n>>m; for(int i=0;i<=B+1;i++)map[0][i]=map[A+1][i]=n+1; for(int i=0;i<=A+1;i++)map[i][0]=map[i][B+1]=n+1; for(int i=1;i<=n;i++){ char f[3]; cin>>rbt[i].x>>rbt[i].y>>f; if(f[0]==‘N‘)rbt[i].to=0; if(f[0]==‘E‘)rbt[i].to=1; if(f[0]==‘S‘)rbt[i].to=2; if(f[0]==‘W‘)rbt[i].to=3; map[rbt[i].x][rbt[i].y]=i; } } int main(){ cin>>T; while(T--){ init(); for(int i=1;i<=m;i++){ int num,rep; char f[3]; cin>>num>>f>>rep; if(flag)continue; if(f[0]==‘R‘){ rbt[num].to=(rbt[num].to+rep)%4; } if(f[0]==‘L‘){ rbt[num].to=(rbt[num].to-rep+4000)%4; } if(f[0]==‘F‘){ for(int i=1;i<=rep;i++){ int nx=dx[rbt[num].to]+rbt[num].x; int ny=dy[rbt[num].to]+rbt[num].y; if(map[nx][ny]){ if(map[nx][ny]==n+1){ printf("Robot %d crashes into the wall ",num); flag=1; break; } else { printf("Robot %d crashes into robot %d ",num,map[nx][ny]); flag=1; break; } } else { map[rbt[num].x][rbt[num].y]=0; map[nx][ny]=num; rbt[num].x=nx; rbt[num].y=ny; } } } } if(!flag)printf("OK "); } }
以上是关于[poj]poj2632(模拟)的主要内容,如果未能解决你的问题,请参考以下文章