POJ2632Crashing Robots

    xiaoxiao2026-06-18  4

    1a,开心

    模拟题,恶心的很。。。。

    #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<stack> #include<queue> using namespace std; int T,A,B,N,M; bool flag; struct Map { int id,dir; }a[120][120],t; int swhdir[4][2]={-1,0,0,1,1,0,0,-1}; void Mapint(int A,int B) { for(int i=0;i<B+5;i++) for(int j=0;j<A+5;j++) a[i][j].id=a[i][j].dir=0; } void loca(int robotid,int x,int y,int direction) { a[x][y].id=robotid; a[x][y].dir=direction; } void printmap() { for(int i=0;i<B;i++) { for(int j=0;j<A;j++) printf("%d %d** ",a[i][j].id,a[i][j].dir); printf("\n"); } } void move(int robotid,char op,int step) { int i,j; for(i=0;i<B;i++) { for(j=0;j<A;j++) if(a[i][j].id==robotid) break; if(j<A) break; } //printf("%d %d\n",i,j); if(op=='L') a[i][j].dir=((a[i][j].dir-step)%4+4)%4; else if(op=='R') a[i][j].dir=(a[i][j].dir+step)%4; else if(op=='F') { while(step--) { int nx_i=i+swhdir[a[i][j].dir][0]; int nx_j=j+swhdir[a[i][j].dir][1]; //printf("%d %d\n",nx_i,nx_j); if(nx_i<0||nx_i>B-1||nx_j<0||nx_j>A-1) { printf("Robot %d crashes into the wall\n",a[i][j].id); flag=false; return; } else if(a[nx_i][nx_j].id!=0) { printf("Robot %d crashes into robot %d\n",a[i][j].id,a[nx_i][nx_j].id); flag=false; return; } else { a[nx_i][nx_j]=a[i][j]; a[i][j].id=a[i][j].dir=0; i=nx_i; j=nx_j; // printf("\n"); // printmap(); } } } } int main() { scanf("%d",&T); while(T--) { flag=true; scanf("%d%d",&A,&B); Mapint(A,B); //printmap(); scanf("%d%d",&N,&M); for(int i=0;i<N;i++) { int x,y,direction; char tempdir[5]; scanf("%d%d%s",&x,&y,tempdir); switch(tempdir[0]) { case 'N':direction=0;break; case 'E':direction=1;break; case 'S':direction=2;break; case 'W':direction=3;break; default :direction=-1; } loca(i+1,B-y,x-1,direction); } //printmap(); for(int i=0;i<M;i++) { int robot,steps; char tempmove[5]; scanf("%d%s%d",&robot,tempmove,&steps); if(flag)move(robot,tempmove[0],steps); } if(flag)printf("OK\n"); } //printmap(); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1310656.html
    最新回复(0)