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 |
贴这种程序...可惜不能删了...In Reply To:数组太大 Posted by:sail6 at 2006-10-01 09:27:51 > #include<stdio.h> > #include<math.h> > #include<string.h> > > #define n6 1000000 > #define n7 10000000 > #define n5 100000 > int D,U; > int U0,U1; > int p0; > > int st,en,p,q; > int map[n7][3]; > bool used[n7]; > > int swap0() > { > //////// p0=D/n6; > > U=D%n6; > U0=U/n6; > U1=U%(int)pow(10,7-p0)/(int)pow(10,6-p0);// 光标 > D=D+(U1-U0)*n5+(U0-U1)*(int)pow(10,6-p0); > return D; > > } > > int swap1() > { > U0=U%10; > ///////p0=D/n6; > U1=U%(int)pow(10,7-p0)/(int)pow(10,6-p0); > D=D+(U1-U0)+(U0-U1)*(int)pow(10,6-p0); > return D; > > } > > int up() > { > p0=D/n6; > D+=(int)pow(10,6-p0); > return D; > } > int down() > { > D-=(int)pow(10,6-p0); > return D; > } > int left() > { > D-=n6; > return D; > > } > > int right() > { > D+=n6; > return D; > } > > int insert() > { > if(used[D]==0) > { > used[D]=1; > q++; > map[q][1]=D; > map[q][2]=map[p][2]+1; > > } > return D; > } > > int main() > { > scanf("%d%d",&st,&en); > p=1; > q=1; > map[1][1]=st+n6; > map[1][2]=0; > memset(used,sizeof(used),0); > used[st+n6]=1; > do > { > if(map[p][1]%n6==en) > { > printf("%d\n",map[p][2]); > break; > } > D=map[p][1]; > p0=D/n6; > if(p0!=1) > { > swap0(); > insert(); > } > if(p0!=6) > { > swap1(); > insert(); > } > if(p0!=1) > { > left(); > insert(); > } > if(p0!=9) > { > right(); > insert(); > } > U=D%n6; > U1=U%(int)pow(10,7-p0)/(int)pow(10,6-p0);// 光标 > if(U1!=9) > { > up(); > insert(); > } > if(U1!=0) > { > down(); > insert(); > } > p++; > }while(p!=q); > > > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator