Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

那位牛大哥帮我看下,小弟实在不知那里错了!!

Posted by wangbaobao at 2009-05-01 10:30:50 on Problem 2632
#include"iostream"
using namespace std;
struct Root
{
	int r;
	int c;
	int direct;
}root[101];
int main()
{
 
	int Test_case;
    cin>>Test_case;
    while(Test_case--)
	{  
	 
	    int a[101][101];
	    memset(a,0,sizeof(a));

		int aa,b,root_num,ms_num,x,y,flag[101]={0},flag1=-2,f=0; 
	 char fx;
	 cin>>aa>>b;
	 cin>>root_num>>ms_num;
	  
	 for(int i=1;i<=root_num;i++)
	 {
          cin>>x>>y>>fx;
          root[i].c=x;
		  root[i].r=b-y+1;
		  a[b-y+1][x]=i;
		 
          
	        
		  if(fx=='E')
			  root[i].direct=0;
		  if(fx=='N')
			  root[i].direct=1;
		  if(fx=='W')
			  root[i].direct=2;
		  if(fx=='S')
			  root[i].direct=3;
	 }
   
	 for(int j=1;j<=ms_num;j++)
	 {
		 int root_list,repeat,rr;
		 char operat;
		 cin>>root_list>>operat>>repeat;
		 if(operat=='L')
		 {
			 root[root_list].direct=(root[root_list].direct+repeat)%4;
		
			 
			
		 }
		 if(operat=='R')
		 {
             root[root_list].direct=root[root_list].direct+(4-(repeat)%4);
		  
		 }
		 
		 if(operat=='F')
		 {
			 
			 if(root[root_list].direct==0)
			 {
				
                
				for(int rrr=1,rr=1;rr<=repeat;rr++)
				{
				    
					a[root[root_list].r][root[root_list].c]=0;
					root[root_list].c=root[root_list].c+rrr;
					
					if(a[root[root_list].r][root[root_list].c]>0)
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=a[root[root_list].r][root[root_list].c];

						  f=1;   break;     
						}
					}

					else if(root[root_list].c>aa)  
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=-1; 
						  f=1; break;         
						}
						if(flag1!=-2)
							break;
					}
				
				}
               
		
				if(rr=repeat+1)
					{
			
						a[root[root_list].r][root[root_list].c]=root_list;
					
					}
			
			 }
					
			else if(root[root_list].direct==1)
			 {
				 for(int rrr=1,rr=1;rr<=repeat;rr++)
				{
					
					 a[root[root_list].r][root[root_list].c]=0;
					 

					 root[root_list].r=root[root_list].r-rrr;
					 
					 if(a[root[root_list].r][root[root_list].c]>0)
					 {
				
						 if(flag1==-2)
						{
						 
						  flag1=root_list;
						  flag[flag1]=a[root[root_list].r][root[root_list].c];
						  f=1;break; 
						}
						 if(flag1!=-2)
							 break;
					 }

					else if(root[root_list].r<=0)
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=-1;
						  f=1; break;   
						}
						if(flag1!=-2)
							break;
					}
				
				}
                 if(rr=repeat+1)	
				 {
					
						a[root[root_list].r][root[root_list].c]=root_list;
				 }
			 }
			 else if(root[root_list].direct==2)
			 {
                 for(int rrr=1,rr=1;rr<=repeat;rr++)
				{
					 a[root[root_list].r][root[root_list].c]=0;
					 root[root_list].c=root[root_list].c-rrr;
					 if(a[root[root_list].r][root[root_list].c]>0)
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=a[root[root_list].r][root[root_list].c];
						  f=1;break;
						}
						if(flag1!=-2)
							break;
					}

					else if(root[root_list].c<=0)
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=-1;  
						  f=1;break;                    
						}
						if(flag1!=-2)
							break;
						
					}
			
				}
				 if(rr==repeat+1)
				 {
						
						a[root[root_list].r][root[root_list].c]=root_list;
				 }

			 }
			 else if(root[root_list].direct==3)
			 {
				 for(int rrr=1,rr=1;rr<=repeat;rr++)
				{
					  a[root[root_list].r][root[root_list].c]=0;
					  root[root_list].r=root[root_list].r+rrr;
					 if(a[root[root_list].r][root[root_list].c]>0)
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=a[root[root_list].r][root[root_list].c];
						  f=1;break;
						}
						if(flag1!=-2)
							break;
					}

					else if(root[root_list].r>b)
					{
						if(flag1==-2)
						{
						  flag1=root_list;
						  flag[flag1]=-1;    
						  f=1; break;
						}
						if(flag1!=-2)
							break;
						
					}
			
				}
				 if(rr==repeat+1)
				 {
						
					
					a[root[root_list].r][root[root_list].c]=root_list;
				 }


			 }
		 }
		
       }
	  
		 
	    if(flag1==-2)
		   cout<<"OK"<<endl;
		else
		{
	    
		 if(flag[flag1]==-1)
            cout<<"Robot "<<flag1<<" crashes into the wall "<<endl;
		 else if(flag[flag1]>0)
            cout<<"Robot "<<flag1<<" crashes into robot "<<flag[flag1]<<endl;
		}
	
	   
    }
return 1;
}





            




Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator