zoukankan      html  css  js  c++  java
  • Catch That Cow POJ 3278(BFS)

    题目链接  POJ3248

    #include<cstdio>
    #include<queue>
    #include<iostream>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    int s,e,p,k,n,pre[210000];  //pre数组 记录父节点
    char vis[210000];
    ll  bfs()
    {
        queue<int> que;
        que.push(s);
        while(!que.empty())
        {
            p=que.front();
            que.pop();
            if(p==e)
            {
                ll ans=0;
                while(1)
                {
                    if(p==s)   //当父节点为起始点时,回溯结束
                        break;
                    ans++;      //统计路径的节点个数
                    p=pre[p];  //不断回溯父节点
                }
                return ans;
            }
            //三种决策方式
            if(p<e&&!vis[2*p])  //p增大有2*p, 和p+1两种方式
            {
                vis[2*p]=1;
                pre[2*p]=p;
                que.push(2*p);
    
            }
            if(p<e&&!vis[p+1])
            {
                vis[p+1]=1;
                pre[p+1]=p;
                que.push(p+1);
            }
            if(p>=1&&!vis[p-1])   //p减小能通过p-1
            {
                vis[p-1]=1;
                pre[p-1]=p;
                que.push(p-1);
            }
        }
    
    }
    int main()
    {
        while(~scanf("%d%d",&n,&k))
        {
            memset(vis,0,sizeof(vis));
            s=n;
            e=k;
            ll ans=bfs();
    
            cout<<ans<<endl;
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    推箱子(简易版)
    [LeetCode] Word Ladder II
    [LeetCode] Path Sum
    [LeetCode] Word Ladder
    DFS & BFS
    [LeetCode] Surrounded Regions
    [LeetCode] Add Binary
    [LeetCode] Plus One
    [LeetCode] Single Number II
    [LeetCode] Single Number
  • 原文地址:https://www.cnblogs.com/longl/p/7238349.html
Copyright © 2011-2022 走看看