题解

2 条题解

  • 1
    @ 2019-04-04 17:47:20

    wow

  • 1
    @ 2019-01-30 13:55:48

    #include<iostream>
    using namespace std;
    int q[1000001][2];
    int n,k;
    bool a[100001];
    int dx[]={-1,1};
    void bfs(int n)
    {
    int x;
    int head=0;
    int tail=0;
    q[++tail][0]=0;
    q[tail][1]=n;
    a[n]=1;
    while(head<tail)
    {
    ++head;
    x=q[head][1];
    if(a[x+1]!=1&&x+1<=100000)
    {
    q[++tail][1]=x+1;
    a[x+1]=1;
    q[tail][0]=q[head][0]+1;
    if(q[tail][1]==k)
    {
    cout<<q[tail][0]<<endl;
    return;
    }
    }
    if((x-1)>=0&&a[x-1]!=1)
    {
    q[++tail][1]=x-1;
    a[x-1]=1;
    q[tail][0]=q[head][0]+1;
    if(q[tail][1]==k)
    {
    cout<<q[tail][0]<<endl;
    return;
    }
    }
    if((x*2)<=100000&&(x*2)>=0&&a[x*2]!=1)
    {
    q[++tail][1]=x*2;
    a[x*2]=1;
    q[tail][0]=q[head][0]+1;
    if(q[tail][1]==k)
    {
    cout<<q[tail][0]<<endl;
    return;
    }
    }
    }
    }
    int main()
    {
    while(std::cin>>n>>k)
    {
    if(n==k)
    cout<<0;
    else
    bfs(n);
    }
    return 0;
    }
    //为什么只能算一组???

  • 1

信息

难度
9
分类
搜索 | 搜索与剪枝 点击显示
标签
(无)
递交数
238
已通过
15
通过率
6%
上传者