void Revise(void) { Go1(1); Go2(2); Go3(1); Go4(2); delay_MS(1560); Go1(0); Go2(0); Go3(0); Go4(0); }
void Go2(int i,int j) { now++; map[i][j]='Y'; if(now>max) max=now; if(i+1<=N&&map[i+1][j]=='.') { Go2(i+1,j); } else if(i+1>N||map[i+1][j]=='#') { if(j>1&&map[i][j-1]=='.') Go3(i,j-1); if(j<N&&map[i][j+1]=='.') Go1(i,j+1); } map[i][j]='.'; now--; }
int main() { int i,j,tmp1,tmp2,total; char tmp[16]; FILE *fin = fopen ("snail.in", "r"); FILE *fout = fopen ("snail.out", "w"); memset(map,'.',sizeof(map)); fscanf(fin,"%d %d",&N,&total); for(i=1;i<=total;i++) { fscanf(fin,"%s",tmp); tmp1=tmp[0]-'A'+1; for(j=1,tmp2=0;tmp[j]!='\0';j++) { tmp2=(tmp2<<3)+(tmp2<<1); tmp2+=tmp[j]-'1'+1; } map[tmp2][tmp1]='#'; } Go1(1,1); Go2(1,1); fprintf(fout,"%d\n",max); return 0; }
void Go(int d,int n,int t) //0号电机,参数1代表正转,2反转,0停止 { unsigned long j=0,temp=0,i=0; unsigned int flag=0,BreakTime=0,UnCountTime=800; if(n==0) { UnCountTime=0; n=1; } if(n<0) { BreakTime=t; t=5; n=1; } //n=0情况,前进距离由时间t控制****************************************** //*********************************************************** if(d==1) { Go1(1); Go2(1); for(;;) { i=j; if((S10 White)&&(S12 Black)&&(S7 White)&&(S9 Black)) { Go3(1); Go4(1); delay_MS(t); Go3(0); Go4(0); j++; } if((S9 White)&&(S7 Black)&&(S10 White)&&(S12 Black)) { Go3(2); Go4(1); delay_MS(t); Go3(0); Go4(0); j++; } if((S12 White)&&(S10 Black)&&(S7 White)&&(S9 Black)) { Go3(1); Go4(2); delay_MS(t); Go3(0); Go4(0); j++; } if((S12 White)&&(S10 Black)&&(S9 White)&&(S7 Black)) { Go3(2); Go4(2); delay_MS(t); Go3(0); Go4(0); j++; } if((S11 White)&&(S7 White)&&(S9 Black)) { Go3(1); delay_MS(t); Go3(0); j++; } if((S11 White)&&(S9 White)&&(S7 Black)) { Go3(2); delay_MS(t); Go3(0); j++; } if((S8 White)&&(S10 White)&&(S12 Black)) { Go4(1); delay_MS(t); Go4(0); j++; } if((S8 White)&&(S12 White)&&(S10 Black)) { Go4(2); delay_MS(t); Go4(0); j++; } if((S11 White)&&(S8 White)) { delay_MS(t); j++; } if(j==i) { delay_MS(t); j++; } if((BreakTime>0)&&(j*t>=BreakTime)) { flag=n; } if((BreakTime==0)&&(j*t-temp>=UnCountTime)&&(Forward White)) { flag++; if(flag<n) temp=j*t; } if(flag>=n) { Go1(0); Go2(0); break; } } } //***************************************************************** if(d==2) { Go1(2); Go2(2); for(;;) { i=j; if((S10 White)&&(S12 Black)&&(S7 White)&&(S9 Black)) { Go3(1); Go4(1); delay_MS(t); Go3(0); Go4(0); j++; } if((S9 White)&&(S7 Black)&&(S10 White)&&(S12 Black)) { Go3(2); Go4(1); delay_MS(t); Go3(0); Go4(0); j++; } if((S12 White)&&(S10 Black)&&(S7 White)&&(S9 Black)) { Go3(1); Go4(2); delay_MS(t); Go3(0); Go4(0); j++; } if((S12 White)&&(S10 Black)&&(S9 White)&&(S7 Black)) { Go3(2); Go4(2); delay_MS(t); Go3(0); Go4(0); j++; } if((S11 White)&&(S7 White)&&(S9 Black)) { Go3(1); delay_MS(t); Go3(0); j++; } if((S11 White)&&(S9 White)&&(S7 Black)) { Go3(2); delay_MS(t); Go3(0); j++; } if((S8 White)&&(S10 White)&&(S12 Black)) { Go4(1); delay_MS(t); Go4(0); j++; } if((S8 White)&&(S12 White)&&(S10 Black)) { Go4(2); delay_MS(t); Go4(0); j++; } if((S11 White)&&(S8 White)) { delay_MS(t); j++; } if(j==i) { delay_MS(t); j++; } if((BreakTime>0)&&(j*t>=BreakTime)) { flag=n; } if((BreakTime==0)&&(j*t-temp>=UnCountTime)&&(Backward White)) { flag++; if(flag<n) temp=j*t; } if(flag>=n) { Go1(0); Go2(0); break; } } } //****************************************** if(d==3) { Go3(1); Go4(1); for(;;) { i=j; if((S3 White)&&(S1 Black)&&(S6 White)&&(S4 Black)) { Go1(1); Go2(1); delay_MS(t); Go1(0); Go2(0); j++; } if((S3 White)&&(S1 Black)&&(S4 White)&&(S6 Black)) { Go1(1); Go2(2); delay_MS(t); Go1(0); Go2(0); j++; } if((S1 White)&&(S3 Black)&&(S6 White)&&(S4 Black)) { Go1(2); Go2(1); delay_MS(t); Go1(0); Go2(0); j++; } if((S1 White)&&(S3 Black)&&(S4 White)&&(S6 Black)) { Go1(2); Go2(2); delay_MS(t); Go1(0); Go2(0); j++; } if((S2 White)&&(S6 Black)&&(S4 White)) { Go2(2); delay_MS(t); Go2(0); j++; } if((S2 White)&&(S4 Black)&&(S6 White)) { Go2(1); delay_MS(t); Go2(0); j++; } if((S5 White)&&(S3 Black)&&(S1 White)) { Go1(2); delay_MS(t); Go1(0); j++; } if((S5 White)&&(S1 Black)&&(S3 White)) { Go1(1); delay_MS(t); Go1(0); j++; } if((S2 White)&&(S5 White)) { delay_MS(t); j++; } if(j==i) { delay_MS(t); j++; } if((BreakTime>0)&&(j*t>=BreakTime)) { flag=n; } if((BreakTime==0)&&(j*t-temp>=UnCountTime)&&(Left White)) { flag++; if(flag<n) temp=j*t; } if(flag>=n) { Go3(0); Go4(0); break; } } } //**************************************************** if(d==4) { Go3(2); Go4(2); for(;;) { i=j; if((S3 White)&&(S1 Black)&&(S6 White)&&(S4 Black)) { Go1(1); Go2(1); delay_MS(t); Go1(0); Go2(0); j++; } if((S3 White)&&(S1 Black)&&(S4 White)&&(S6 Black)) { Go1(1); Go2(2); delay_MS(t); Go1(0); Go2(0); j++; } if((S1 White)&&(S3 Black)&&(S6 White)&&(S4 Black)) { Go1(2); Go2(1); delay_MS(t); Go1(0); Go2(0); j++; } if((S1 White)&&(S3 Black)&&(S4 White)&&(S6 Black)) { Go1(2); Go2(2); delay_MS(t); Go1(0); Go2(0); j++; } if((S2 White)&&(S6 Black)&&(S4 White)) { Go2(2); delay_MS(t); Go2(0); j++; } if((S2 White)&&(S4 Black)&&(S6 White)) { Go2(1); delay_MS(t); Go2(0); j++; } if((S5 White)&&(S3 Black)&&(S1 White)) { Go1(2); delay_MS(t); Go1(0); j++; } if((S5 White)&&(S1 Black)&&(S3 White)) { Go1(1); delay_MS(t); Go1(0); j++; } if((S2 White)&&(S5 White)) { delay_MS(t); j++; } if(j==i) { delay_MS(t); j++; } if((BreakTime>0)&&(j*t>=BreakTime)) { flag=n; } if((BreakTime==0)&&(j*t-temp>=UnCountTime)&&(Right White)) { flag++; if(flag<n) temp=j*t; } if(flag>=n) { Go3(0); Go4(0); break; } } } }