zoukankan      html  css  js  c++  java
  • 奇妙的旅行[XDU1012]

    Problem 1012 - 奇妙的旅行
    Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty:
    Total Submit: 396  Accepted: 116  Special Judge: No
    Description

      炸鸡儿非常喜欢旅行,而且喜欢在坐标轴上旅行,从起点A到终点B(0<=A,B<=100000)。他旅行的方法很特殊,喜欢用跳的,每次跳一个地方只有三种方法:
    从点C跳到点C+1。
    从点C跳到点C-1。
    从点C跳到点2*C。
    请问他从A跳到B至少需要多少步?

    Input
    每组数据两个整数A,B(0<=A,B<=100000)。
    Output
    每例输出一行,表示至少需要的步数。
    Sample Input
    1 100000
    0 100000
    Sample Output
    21
    22
    Hint
     
    Source
    Wang Miao
    不知为什么,最近特喜欢做这样的水水的bfs.
    #include<stdio.h>
    #include<string.h>
    #include<queue>
    using namespace std;
    struct node
    {
        int val,step;
    };
    int S,T;
    bool s[200010];
    int bfs()
    {
        memset(s,false,sizeof(s));
        queue<node> q;
        while (!q.empty()) q.pop();
        node st;
        st.val=S;
        st.step=0;
        q.push(st);
        s[S]=true;
        while (!q.empty())
        {
            node st=q.front();
            q.pop();
            if (st.val==T) return st.step;
            if (st.val+1<=T*2)
            if (!s[st.val+1])
            {
                s[st.val+1]=true;
                node tmp=st;
                tmp.step++;
                tmp.val=st.val+1;
                q.push(tmp);
            }
            if (st.val-1>0)
            if (!s[st.val-1])
            {
                s[st.val-1]=true;
                node tmp=st;
                tmp.step++;
                tmp.val=st.val-1;
                q.push(tmp);
            }
            if ((st.val<<1)<=T*2)
            if (!s[st.val<<1])
            {
                s[st.val<<1]=true;
                node tmp=st;
                tmp.step++;
                tmp.val=st.val<<1;
                q.push(tmp);
            }
        }
    }
    int main()
    {
        while (scanf("%d%d",&S,&T)!=EOF)
        {
            if (S>T)
            {
                printf("%d
    ",S-T);
                continue;
            }
            int ans=bfs();
            printf("%d
    ",ans);
        }
        return 0;
    }

     

  • 相关阅读:
    团队作业4--项目冲刺
    第七篇Scrum冲刺博客--Interesting-Corps
    第六篇Scrum冲刺博客--Interesting-Corps
    第五篇Scrum冲刺博客--Interesting-Corps
    第四篇Scrum冲刺博客--Interesting-Corps
    第三篇Scrum冲刺博客--Interesting-Corps
    第二篇Scrum冲刺博客--Interesting-Corps
    团队作业6——复审与事后分析
    alpha阶段项目复审
    团队作业5—测试与发布说明
  • 原文地址:https://www.cnblogs.com/dramstadt/p/3262728.html
Copyright © 2011-2022 走看看