• 奇妙的旅行[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;
    }

     

  • 相关阅读:
    Linux命令格式与修改文件权限的命令
    Linux 文件基本属性
    Linux 系统目录结构
    Linux 系统启动过程
    Linux在线学习模拟器
    jQuery做的自定义选项卡
    jQuery做的可编辑表格
    海康解码器对接总结(java 版)
    Java线程总结(二)
    Java线程总结(一)
  • 原文地址:https://www.cnblogs.com/dramstadt/p/3262728.html
Copyright © 2020-2023  润新知