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 }
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 }