代码改变世界

1228. Crashing Robots

2011-05-18 20:29  Min·zc  阅读(157)  评论(0编辑  收藏  举报
  1 /*
  2  *直接按照题意模拟
  3  *如果有一个机器人出现问题,那么后面的行动都不执行
  4  *
  5  *
  6  *
  7  */
  8 
  9 #include <iostream>
 10 #include <memory.h>
 11 using namespace std;
 12 struct rb
 13 {
 14         int x;
 15         int y;
 16         int dr;
 17 };
 18 rb rbt[110];
 19 int house[111][111];
 20 int w,l;
 21 int n,m;
 22 int main()
 23 {
 24         int t;
 25         cin>>t;
 26         while(t--)
 27         {
 28                 cin>>w>>l>>n>>m;
 29                 int ses=1;
 30                 memset(house,0,sizeof(house));
 31                 for(int i=1;i<=n;i++)
 32                 {
 33                         char x;
 34                         cin>>rbt[i].x>>rbt[i].y>>x;
 35                         if(x=='N')
 36                                 rbt[i].dr=0;
 37                         else if(x=='E')
 38                                 rbt[i].dr=1;
 39                         else if(x=='S')
 40                                 rbt[i].dr=2;
 41                         else if(x=='W')
 42                                 rbt[i].dr=3;
 43                         house[rbt[i].x][rbt[i].y]=i;
 44                 }
 45                 for(int j=0;j<m;j++)
 46                 {
 47                         int i;
 48                         cin>>i;
 49                         char ac;
 50                         cin>>ac;
 51                         int rp;
 52                         cin>>rp;
 53                         if(ses==1)
 54                         {
 55                                 if(ac=='F')
 56                                 {
 57                                         for(int k=0;k<rp;k++)
 58                                         {
 59                                                 house[rbt[i].x][rbt[i].y]=0;
 60                                                 if(rbt[i].dr==0)
 61                                                         rbt[i].y++;
 62                                                 else if(rbt[i].dr==1)
 63                                                         rbt[i].x++;
 64                                                 else if(rbt[i].dr==2)
 65                                                         rbt[i].y--;
 66                                                 else if(rbt[i].dr==3)
 67                                                         rbt[i].x--;
 68                                                 if(rbt[i].x<1||rbt[i].x>w||rbt[i].y<1||rbt[i].y>l)
 69                                                 {
 70                                                 
 71                                                         //cout<<rbt[i].x<<" "<<w<<endl;
 72                                                         cout<<"Robot "<<i<<" crashes into the wall"<<endl;
 73                                                         ses=0;
 74                                                         break;
 75                                                 }
 76                                                 if(house[rbt[i].x][rbt[i].y]!=0)
 77                                                 {
 78                                                         cout<<"Robot "<<i<<" crashes into robot "<<house[rbt[i].x][rbt[i].y]<<endl;
 79                                                         ses=0;
 80                                                         break;
 81                                                 }
 82                                                 else
 83                                                 {
 84                                                         house[rbt[i].x][rbt[i].y]=i;
 85                                         }
 86                                 }
 87                                 }
 88                                 else if(ac=='R')
 89                                 {
 90                                         rbt[i].dr=(rbt[i].dr+rp)%4;
 91                                 }
 92                                 else if(ac=='L')
 93                                 {
 94                                         rbt[i].dr=(rbt[i].dr-rp)%4;
 95                                         if(rbt[i].dr<0)
 96                                                 rbt[i].dr+=4;
 97                                 }
 98                         }
 99                 }               
100                 if(ses)
101                         cout<<"OK"<<endl;
102         }
103 }