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 |
小妹泣血告求wrong在哪???#include<iostream> using namespace std; struct direction { char d; int next; int first; }d4[4]; void initdirection() { int i; d4[0].d='N'; d4[1].d='E'; d4[2].d='S'; d4[3].d='W'; for(i=0;i<3;i++) { d4[i].next=i+1; } d4[3].next=0; for(i=3;i>1;i--) { d4[i].first=i-1; } d4[0].first=3; } class robot { int r; int v; char rd; int d4n; public: void clear(); void set(int,int,char); void setd4n(); int move(int,char,int,int,int,robot*,int,int&); int outcome(int,int,int,robot*,int,int&); }; void robot::clear() { r=0; v=0; rd='\0'; d4n=0; } void robot::set(int r,int v,char rd) { this->r=r; this->v=v; this->rd=rd; } void robot::setd4n() { int i=0; while(d4[i].d!=rd) { i++; } d4n=i; } int robot::move(int rnum,char inum,int n,int A,int B,robot*robotarray,int rn,int &cior) { int result; int p; p=d4n; int i; switch(inum) { case 'L': for(i=0;i<n;i++) { p=d4[p].first; rd=d4[p].d; } break; case 'R': for(i=0;i<n;i++) { p=d4[p].next; rd=d4[p].d; } break; case 'F': { for(i=0;i<n;i++) { switch(rd) { case 'N': r++; result=outcome(rnum,A,B,robotarray,rn,cior); if(result!=0) return result; break; case 'E': v++; result=outcome(rnum,A,B,robotarray,rn,cior); if(result!=0) return result; break; case 'S': r--; result=outcome(rnum,A,B,robotarray,rn,cior); if(result!=0) return result; break; case 'W': v--; result=outcome(rnum,A,B,robotarray,rn,cior); if(result!=0) return result; break; } } } break; } return 0; } int robot::outcome(int rnum,int A,int B,robot *robotarray,int rn,int &cior) { int i; if((r<0||r>A)||(v<0||v>B)) { return 1; } for(i=0;i<rn;i++) { if(i!=rnum-1&&robotarray[i].r==r&&robotarray[i].v==v) { cior=i+1; return 2; } } return 0; } int main() { initdirection(); int num,A,B,rn,in,rnum,n,r,v; int i,j,k; char rd,inum; int result,rerobot,cior=-1; robot robotarray[100]; cin>>num; for(i=0;i<num;i++) { cin>>B>>A>>rn>>in; for(j=0;j<rn;j++) { cin>>v>>r>>rd; robotarray[j].set(r,v,rd); robotarray[j].setd4n(); } for(j=0;j<in;j++) { cin>>rnum>>inum>>n; result=robotarray[rnum-1].move(rnum,inum,n,A,B,robotarray,rn,cior); if(result!=0) { k=j; rerobot=rnum; break; } } if(result==0) cout<<"OK"<<endl; else { for(j=k+1;j<in;j++) cin>>rnum>>inum>>n; switch(result) { case 1:cout<<"Robot "<<rerobot<<" crashes into the wall"<<endl;break; case 2:cout<<"Robot "<<rerobot<<" crashes into robot "<<cior<<endl;break; } } for(i=0;i<rn;i++) { robotarray[i].clear(); } result=-1;rerobot=-1;cior=-1; } return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator