hdu-2717

来源:互联网 发布:node ejs excwl 编辑:程序博客网 时间:2024/06/05 11:28

bfs适合求最少步数

#include<stdio.h>#include<string.h>int a[100010],v[100010],n,k;void bfs(){    int front=0,rear=1,i;    v[n]=0;    a[0]=n;    while(front!=rear)    {        i=a[front++];        if(i==k)            return ;        if(i<100000 && !v[i+1])            a[rear++]=i+1,v[i+1]=v[i]+1;        if(i>0 && !v[i-1])            a[rear++]=i-1,v[i-1]=v[i]+1;        if(i*2<=100000 && !v[i*2])            a[rear++]=i*2,v[i*2]=v[i]+1;    }}int main(){    //freopen("d:\\test.txt","r",stdin);    while(~scanf("%d%d",&n,&k))    {        memset(v,0,sizeof(v));        bfs();        printf("%d\n",v[k]);    }    return 0;}


原创粉丝点击