POJ 2632 Crashing Robots

来源:互联网 发布:安卓可视化编程 编辑:程序博客网 时间:2024/04/30 06:14

模拟题,题意好懂,不说了。我写的时候边界竟然处理错了一次,我的长方形的长和宽都是从1开始的,竟然里面不知不觉的写成了0.悲剧的wa了一次。

#include<iostream>using namespace std;int matrix[101][101];struct node{int x;int y;int direction;};node robot[101];int main(){int test,chang,kuan,i,j,N,instruction,ok,bian,b;char a;cin>>test;while(test--){cin>>chang>>kuan;for(j=1;j<=kuan;j++)for(i=1;i<=chang;i++)matrix[i][j]=0;cin>>N>>instruction;ok=0;for(i=1;i<=N;i++){cin>>robot[i].x>>robot[i].y>>a;if(a=='E')robot[i].direction=0;else if(a=='N')robot[i].direction=1;else if(a=='W')robot[i].direction=2;else robot[i].direction=3;matrix[robot[i].x][robot[i].y]=i;}for(j=1;j<=instruction;j++){cin>>bian>>a>>b;if(ok==1)continue;if(a=='R'){if(b%4==0);else if(b%4==1)robot[bian].direction=(robot[bian].direction+3)%4;else if(b%4==2)robot[bian].direction=(robot[bian].direction+2)%4;else robot[bian].direction=(robot[bian].direction+1)%4;}if(a=='L'){if(b%4==0);else if(b%4==1)robot[bian].direction=(robot[bian].direction+1)%4;else if(b%4==2)robot[bian].direction=(robot[bian].direction+2)%4;else robot[bian].direction=(robot[bian].direction+3)%4;}if(a=='F'){if(robot[bian].direction==0){matrix[robot[bian].x][robot[bian].y]=0;for(i=robot[bian].x+1;i<=robot[bian].x+b;i++){if(matrix[i][robot[bian].y]!=0){ok=1;cout<<"Robot "<<bian<<" crashes into robot "<<matrix[i][robot[bian].y]<<endl;break;}if(i>chang){ok=1;cout<<"Robot "<<bian<<" crashes into the wall"<<endl;break;}}if(ok==0){  matrix[robot[bian].x+b][robot[bian].y]=bian;robot[bian].x=robot[bian].x+b;}}if(robot[bian].direction==3){matrix[robot[bian].x][robot[bian].y]=0;for(i=1;i<=b;i++){if(matrix[robot[bian].x][robot[bian].y-i]!=0){ok=1;cout<<"Robot "<<bian<<" crashes into robot "<<matrix[robot[bian].x][robot[bian].y-i]<<endl;break;}if(robot[bian].y-i<=0){ok=1;cout<<"Robot "<<bian<<" crashes into the wall"<<endl;break;}}if(ok==0){matrix[robot[bian].x][robot[bian].y-b]=bian;robot[bian].y=robot[bian].y-b;}}if(robot[bian].direction==2){matrix[robot[bian].x][robot[bian].y]=0;for(i=robot[bian].x-1;i>=robot[bian].x-b;i--){if(matrix[i][robot[bian].y]!=0){ok=1;cout<<"Robot "<<bian<<" crashes into robot "<<matrix[i][robot[bian].y]<<endl;break;}if(i<=0){ok=1;cout<<"Robot "<<bian<<" crashes into the wall"<<endl;break;}}if(ok==0){matrix[robot[bian].x-b][robot[bian].y]=bian;robot[bian].x=robot[bian].x-b;}}            if(robot[bian].direction==1){matrix[robot[bian].x][robot[bian].y]=0;for(i=1;i<=b;i++){if(matrix[robot[bian].x][robot[bian].y+i]!=0){ok=1;cout<<"Robot "<<bian<<" crashes into robot "<<matrix[robot[bian].x][robot[bian].y+i]<<endl;break;}if(robot[bian].y+i>kuan){ok=1;cout<<"Robot "<<bian<<" crashes into the wall"<<endl;break;}}if(ok==0){matrix[robot[bian].x][robot[bian].y+b]=bian;robot[bian].x=robot[bian].x;robot[bian].y=robot[bian].y+b;}}}}if(ok==0)cout<<"OK"<<endl;}return 0;}