标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8352 | Accepted: 3613 |
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
1 #include <iostream> 2 #include<string.h> 3 using namespace std; 4 5 int main() { 6 7 int K=0; 8 int ew,ns; 9 int robots_num; 10 int instruction; 11 //读取记录机器人的位置 12 int robots_posx[105]; 13 int robots_posy[105]; 14 int robots_to[105]; 15 //读取记录对机器人的操作 16 int ins_rob[105]; 17 char ins_op[105]; 18 int ins_rep[105]; 19 //记录所有机器人的位置 20 int pos[100][100]; 21 cin>>K; 22 //flag 记录状态 -1 Ok;0 撞到墙;其他 撞到机器人的编号 23 int flag=-1; 24 int rob_n; 25 for(int i=0;i<K;i++){ 26 flag=-1; 27 rob_n=0; 28 memset(pos,0,sizeof(int)*10000); 29 cin>>ew>>ns>>robots_num>>instruction; 30 for(int j=0;j<robots_num;j++){ 31 char tmp; 32 cin>>robots_posx[j]>>robots_posy[j]; 33 pos[robots_posy[j]-1][robots_posx[j]-1]=j+1; 34 cin>>tmp; 35 switch(tmp){ 36 case(‘N‘): 37 robots_to[j]=0; 38 break; 39 case(‘E‘): 40 robots_to[j]=1; 41 break; 42 case(‘S‘): 43 robots_to[j]=2; 44 break; 45 case(‘W‘): 46 robots_to[j]=3; 47 break; 48 } 49 } 50 for(int j=0;j<instruction;j++){ 51 cin>>ins_rob[j]; 52 cin>>ins_op[j]; 53 cin>>ins_rep[j]; 54 } 55 for(int j=0;j<instruction;j++){ 56 int rob=ins_rob[j]-1; 57 char op=ins_op[j]; 58 if(op==‘L‘) 59 robots_to[rob]=(robots_to[rob]+(4-ins_rep[j]%4))%4; 60 if(op==‘R‘) 61 robots_to[rob]=(robots_to[rob]+ins_rep[j])%4; 62 if(op==‘F‘){ 63 int rep=ins_rep[j]; 64 pos[robots_posy[rob]-1][robots_posx[rob]-1]=0; 65 int tow=robots_to[rob]; 66 if(tow==0){ 67 for(int k=0;k<rep;k++){ 68 robots_posy[rob]++; 69 if(robots_posy[rob]>ns){ 70 flag=0; 71 rob_n=rob+1; 72 break; 73 }else if(pos[robots_posy[rob]-1][robots_posx[rob]-1]!=0){ 74 flag=pos[robots_posy[rob]-1][robots_posx[rob]-1]; 75 rob_n=rob+1; 76 break; 77 } 78 } 79 }else if(tow==1){ 80 for(int k=0;k<rep;k++){ 81 robots_posx[rob]++; 82 if(robots_posx[rob]>ew){ 83 flag=0; 84 rob_n=rob+1; 85 break; 86 }else if(pos[robots_posy[rob]-1][robots_posx[rob]-1]!=0){ 87 flag=pos[robots_posy[rob]-1][robots_posx[rob]-1]; 88 rob_n=rob+1; 89 break; 90 } 91 } 92 }else if(tow==2){ 93 for(int k=0;k<rep;k++){ 94 robots_posy[rob]--; 95 if(robots_posy[rob]<1){ 96 flag=0; 97 rob_n=rob+1; 98 break; 99 }else if(pos[robots_posy[rob]-1][robots_posx[rob]-1]!=0){ 100 flag=pos[robots_posy[rob]-1][robots_posx[rob]-1]; 101 rob_n=rob+1; 102 break; 103 } 104 } 105 }else if(tow==3){ 106 for(int k=0;k<rep;k++){ 107 robots_posx[rob]--; 108 if(robots_posx[rob]<1){ 109 flag=0; 110 rob_n=rob+1; 111 break; 112 }else if(pos[robots_posy[rob]-1][robots_posx[rob]-1]!=0){ 113 flag=pos[robots_posy[rob]-1][robots_posx[rob]-1]; 114 rob_n=rob+1; 115 break; 116 } 117 } 118 } 119 if(flag!=-1) 120 break; 121 pos[robots_posy[rob]-1][robots_posx[rob]-1]=rob+1; 122 } 123 124 125 } 126 if(flag==-1) 127 cout<<"OK"<<endl; 128 else if(flag==0) 129 cout<<"Robot "<<rob_n<<" crashes into the wall"<<endl; 130 else 131 cout<<"Robot "<<rob_n<<" crashes into robot "<<flag<<endl; 132 } 133 return 0; 134 }
标签:
原文地址:http://www.cnblogs.com/sdxk/p/4620403.html