Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
哪个大神帮帮忙,看我哪错了,代码不多,谢了#include<stdio.h> struct Robot{ int x,y; int direction;//0:N ,1:W ,2:S ,3:E }; struct Instruction{ int x,y; char ch; }; int a,b,n,m; int judge(Robot robots[],int i,int j); int main() { bool flag; int t,i,j,k,x,y; char ch; Robot robots[105]; Instruction orders[105]; scanf("%d",&t); while(t--) { flag=1; scanf("%d%d",&a,&b); scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d%d%*c%c%*c",&robots[i].x,&robots[i].y,&ch); if(ch=='N') robots[i].direction=0; else if(ch=='W') robots[i].direction=1; else if(ch=='S') robots[i].direction=2; else if(ch=='E') robots[i].direction=3; } for(i=0;i<m;i++) scanf("%d%*c%c%*c%d",&orders[i].x,&orders[i].ch,&orders[i].y); for(x=0;x<m;x++) { i=orders[x].x; j=orders[x].y; ch=orders[x].ch; if(ch=='L') { robots[i].direction=(robots[i].direction+j)%4; } else if(ch=='R') { robots[i].direction=(robots[i].direction-j)%4; if(robots[i].direction<0) robots[i].direction+=4; } else { k=judge(robots,i,j); if(k==0) {printf("Robot %d crashes into the wall\n",i);flag=0;} else if(k>0) {printf("Robot %d crashes into robot %d\n",i,k);flag=0;} } } if(flag) printf("OK\n"); } } int judge(Robot robots[],int i,int j) { int k; int tem; if(robots[i].direction==0){ tem=robots[i].y; robots[i].y+=j; for(k=1;k<=n;k++) { if(k!=i&&robots[k].x==robots[i].x&&robots[k].y>=tem&&robots[k].y<=robots[i].y) return k; } if(robots[i].y>b) return 0; else return -1; } else if(robots[i].direction==1){ tem=robots[i].x; robots[i].x-=j; for(k=1;k<=n;k++) { if(k!=i&&robots[k].y==robots[i].y&&robots[k].x>=robots[i].x&&robots[k].x<=tem) return k; } if(robots[i].x<1) return 0; else return -1; } else if(robots[i].direction==2){ tem=robots[i].y; robots[i].y-=j; for(k=1;k<=n;k++) { if(k!=i&&robots[k].x==robots[i].x&&robots[k].y>=robots[i].y&&robots[k].y<=tem) return k; } if(robots[i].y<1) return 0; else return -1; } else if(robots[i].direction==3){ tem=robots[i].x; robots[i].x+=j; for(k=1;k<=n;k++) { if(k!=i&&robots[k].y==robots[i].y&&robots[k].x>=tem&&robots[k].x<=robots[i].x) return k; } if(robots[i].x>a) return 0; else return -1; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator