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 |
这样做是错的,在其他oj上是wrong anwer的进In Reply To:Re:一次AC~~~纪念一下~~~ Posted by:201165148 at 2012-06-21 19:03:23 > #include <stdio.h> > #include <string.h> > > struct data > { > int x,min; > }queue[100000],now; > > int flag[100000]; > int in,out; > int N,K; > > int bfs() > { > in=out=0; > queue[in].x=N; > queue[in].min=0; > memset(flag,0,sizeof(flag)); > flag[N]=1; > in++; > > while(1) > { > now=queue[out++]; > > if(now.x==K) > return now.min; > if(now.x+1<=100000 && !flag[now.x+1]) > { > queue[in].x=now.x+1; > queue[in++].min=now.min+1; > flag[now.x+1]=1; > } > if(now.x-1>=0 && !flag[now.x-1]) > { > queue[in].x=now.x-1; > queue[in++].min=now.min+1; > flag[now.x-1]=1; > } > if(now.x*2<=100000 && !flag[now.x*2]) > { > queue[in].x=now.x*2; > queue[in++].min=now.min+1; > flag[now.x*2]=1; > } > } > return 213; > } > > int main() > { > while((scanf("%d%d",&N,&K))!=EOF) > { > printf("%d\n",bfs()); > } > return 0; > } 这样做没有考虑在队列里虽然一个点先到达,但可能通过其它方式路径更短…… Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator