| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 13304 | Accepted: 5545 |
Description
Input
Output
Sample Input
4 5 4 2 2 1 1 E 5 4 W 1 F 7 2 F 7 5 4 2 4 1 1 E 5 4 W 1 F 3 2 F 1 1 L 1 1 F 3 5 4 2 2 1 1 E 5 4 W 1 L 96 1 F 2 5 4 2 3 1 1 E 5 4 W 1 F 4 1 L 1 1 F 20
Sample Output
Robot 1 crashes into the wall Robot 1 crashes into robot 2 OK Robot 1 crashes into robot 2
Source
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn=10005; int n,m,row,col; struct Robot{ int x,y; char dir; }robot[maxn]; int vis[105][105]; int flag=0; int main() { int t; cin>>t; while(t--){ memset(vis,0,sizeof vis); char dir; cin>>row>>col; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>robot[i].x>>robot[i].y>>robot[i].dir; vis[robot[i].x][robot[i].y]=i; } flag=1; for(int i=1;i<=m;i++){ char c; int id,num; cin>>id>>c>>num; if(flag){ if(c==‘L‘){ for(int i=0;i<num;i++){ if(robot[id].dir==‘N‘) robot[id].dir=‘W‘; else if(robot[id].dir==‘W‘) robot[id].dir=‘S‘; else if(robot[id].dir==‘S‘) robot[id].dir=‘E‘; else if(robot[id].dir==‘E‘) robot[id].dir=‘N‘; } } else if(c==‘R‘){ for(int i=0;i<num;i++){ if(robot[id].dir==‘N‘) robot[id].dir=‘E‘; else if(robot[id].dir==‘E‘) robot[id].dir=‘S‘; else if(robot[id].dir==‘S‘) robot[id].dir=‘W‘; else if(robot[id].dir==‘W‘) robot[id].dir=‘N‘; } } //c==‘F‘ else{ if(robot[id].dir==‘N‘){ vis[robot[id].x][robot[id].y]=0; for(int i=0;i<num;i++){ robot[id].y++; if(robot[id].y>col){ printf("Robot %d crashes into the wall\n",id); flag = false; break; } if(vis[robot[id].x][robot[id].y]){ printf("Robot %d crashes into robot %d\n",id,vis[robot[id].x][robot[id].y]); flag=false; break; } } vis[robot[id].x][robot[id].y]=id; } if(robot[id].dir==‘S‘){ vis[robot[id].y][robot[id].x]=0; for(int i=0;i<num;i++){ robot[id].y--; if(robot[id].y<1){ printf("Robot %d crashes into the wall\n",id); flag = false; break; } if(vis[robot[id].x][robot[id].y]){ printf("Robot %d crashes into robot %d\n",id,vis[robot[id].x][robot[id].y]); flag=false; break; } } vis[robot[id].x][robot[id].y]=id; } if(robot[id].dir==‘W‘){ for(int i=0;i<num;i++){ vis[robot[id].x][robot[id].y]=0; robot[id].x--; if(robot[id].x<1){ printf("Robot %d crashes into the wall\n",id); flag = false; break; } if(vis[robot[id].x][robot[id].y]){ printf("Robot %d crashes into robot %d\n",id,vis[robot[id].x][robot[id].y]); flag=false; break; } } vis[robot[id].x][robot[id].y]=id; } if(robot[id].dir==‘E‘){ vis[robot[id].x][robot[id].y]=0; for(int i=0;i<num;i++){ robot[id].x++; if(robot[id].x>row){ printf("Robot %d crashes into the wall\n",id); flag = false; break; } if(vis[robot[id].x][robot[id].y]){ printf("Robot %d crashes into robot %d\n",id,vis[robot[id].x][robot[id].y]); flag=false; break; } } vis[robot[id].x][robot[id].y]=id; } } } } if(flag) cout<<"OK\n"; } return 0; }
原文:https://www.cnblogs.com/lovelcy/p/11824840.html