zoukankan      html  css  js  c++  java
  • 计蒜客一维坐标的移动

    在一个长度为 nn 的坐标轴上,蒜头君想从 AA 点 移动到 BB 点。他的移动规则如下:

    1. 向前一步,坐标增加 11。
    2. 向后一步,坐标减少 11。
    3. 跳跃一步,使得坐标乘 22。

    蒜头君不能移动到坐标小于 00 或大于 nn 的位置。蒜头想知道从 AA 点移动到 BB 点的最少步数是多少,你能帮他计算出来么?

    输入格式

    第一行输入三个整数 nn,AA,BB,分别代表坐标轴长度,起始点坐标,终点坐标。(0 le A, B le n le 50000A,Bn5000)

    输出格式

    输出一个整数占一行,代表蒜头要走的最少步数。

    样例输入

    10 2 7

    样例输出

    3

    解析

    因为只需要最短路径,考虑bfs,找出最短路即可
    #include<bits/stdc++.h>
    using namespace std;
    queue<int> xx;
    int n,a,b;//坐标轴长度,起点,终点
    int record[5005];
    int changex[5]={0,1,-1}; 
    int main()
    {
        cin>>n
        >>a
        >>b; 
        xx.push(a);
        while(!xx.empty())
        {
            int nowx=xx.front();
            xx.pop();
            for(int i=1;i<=3;i++)
            {
                int newx;
                if(i==3)
                {
                    newx=nowx*2;
                }
                else newx=nowx+changex[i];
                if(newx>n||newx<1) continue;//注意要先判断是否越界
                if(record[newx]!=0) continue;
                if(newx==a) continue;
                record[newx]=record[nowx]+1;
                xx.push(newx);
            }
        }
        cout<<record[b]<<endl;
        return 0;
    }


  • 相关阅读:
    javascript 变量定义
    javascript之String
    javascript之object
    javascript之Number
    javascript之window对象
    javascript全局对象
    【NOIP2017】【Luogu3951】小凯的疑惑
    【NOIP2008】【Luogu1149】火柴棒等式
    【NOIP2008】【Luogu1125】笨小猴
    【NOIP2005】【Luogu1051】谁拿了最多奖学金
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9294407.html
Copyright © 2011-2022 走看看