• poj 3278 Catch That Cow


    题目

    题意:输入n,m,求由n到m需要最少步数,n只能加一减一或者乘二。每一种可能读入队尾,然后再从队首一个一个的遍历

    (0 ≤ n,m≤ 100,000) ,Max 需要取到2*100,000

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    using namespace std;
    const int Max = 2e5;
    
    int vis[Max],dis[Max];
    
    int bfs(int s,int e)
    {
        int t;
        memset(vis,0,sizeof(vis));
        queue<int> q;
        vis[s]=1;dis[s]=0;q.push(s);
        while(!q.empty())
        {
            t = q.front();q.pop();
            if(t==e) return dis[t];
            if((t-1)>=0&&(t-1)<Max&&!vis[t-1])
            {
                dis[t-1]=dis[t]+1;
                vis[t-1]=1;
                q.push(t-1);
            }
            if((t+1)>=0&&(t+1)<Max&&!vis[t+1]){
                dis[t+1]=dis[t]+1;
                vis[t+1]=1;
                q.push(t+1);
            }
            if((t*2)>=0&&(t*2)<Max&&!vis[t*2]){
                dis[t*2]=dis[t]+1;
                vis[t*2]=1;
                q.push(t*2);
            }
        }
    
    }
    int main()
    {
        int n,m;
        while(cin>>n>>m)
        {
            cout<<bfs(n,m)<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    DOM节点类型
    javascript中的变量、作用域
    this 不同情况指代的对象
    BOM对象节点
    浏览器兼容性
    总结
    javascript事件流讲解和实例应用
    7.20
    7.16总结
    飞机大战
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160138.html
Copyright © 2020-2023  润新知