首页 > 试题广场 >

小招喵跑步

[编程题]小招喵跑步
  • 热度指数:11738 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是:
1.数轴上向前走一步,即n=n+1 
2.数轴上向后走一步,即n=n-1 
3.数轴上使劲跳跃到当前点的两倍,即n=2*n
现在小招喵在原点,即n=0,它想去点x处,快帮小招喵算算最快的走法需要多少步?

输入描述:
小招喵想去的位置x


输出描述:
小招喵最少需要的步数
示例1

输入

3

输出

3
头像 已注销
发表于 2020-08-23 10:54:26
题目 题目描述小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是:1.数轴上向前走一步,即n=n+12.数轴上向后走一步,即n=n-13.数轴上使劲跳跃到当前点的两倍,即n=2*n现在小招喵在原点,即n=0,它想去点x处,快帮小招喵算算最快的走法需要多少步? 输入描述:小招喵想 展开全文
头像 KNYL
发表于 2025-04-01 21:24:46
##求0到x位置我们可以反过来思考如何从x位置到0. ##注意全部代码下输入输出都要以int整数进行处理即可。 x = int(input()) step = 0 if x < 0:##翻转负数 x = abs(x) if x <= 3:##x《=3时可直接穷举得到 st 展开全文
头像 我吃一口就行
发表于 2022-08-13 18:22:24
#include <iostream> #include <cmath> using namespace std; int main() {     int n;   展开全文
头像 牛客fd515346550号
发表于 2022-05-15 20:34:52
这道题有大佬已经讲解的很好了,我想说的是 如果当前位置不能被2整除的时候,到达i位置有两种情况: (1)i-1满足当前位置为偶数,然后加上跳到本次的位置步数 dp[i]=dp[i-1]+1,这里还可以写成:dp[i]=dp[(i-1)/2] + 1 + 1; (2)i+1满足当前位置为偶数, 然后回 展开全文
头像 少年锦时_zkn
发表于 2021-12-01 13:48:31
#//经过自己的分析,这个题只用考虑正数即可,同时刚开始时候考虑的是动规,但那样根本无法确定建立多大的数组存储。 //因此考虑递归,递归的思想为贪心。 //偶数的最小值一定是f(x/2)+1,但奇数不一定,因此要去f(x-1),f(x+1)的最小值。 int dfs(int x){ if(x 展开全文
头像 君鸿
发表于 2025-03-13 17:20:58
描述小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是:1.数轴上向前走一步,即n=n+1 2.数轴上向后走一步,即n=n-1 3.数轴上使劲跳跃到当前点的两倍,即n=2*n现在小招喵在原点,即n=0,它想去点x处,快帮小招喵算算最快的走法需要多少步?输入描述:小招喵想去的位置 展开全文
头像 牛客216353250号
发表于 2023-09-21 13:03:53
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () = 展开全文
头像 贪吃的迪恩顶呱呱
发表于 2024-05-02 20:53:19
根据对称性,如果需要跳到负轴上,直接将其转为相反数定义 dp[i] 为跳到 i 点时需要的最少步数当 i 为偶数时,可以直接从 dp[i/2] 跳一步过来;当 i 为奇数时,可以从 dp[i-1] 向前走一步过来,也可以从 dp[(i+1)/2] 跳一步到 dp[i+1] ,再退一步回到 dp[i] 展开全文
头像 three_0430
发表于 2023-10-15 17:38:53
#include <iostream> using namespace std; int f(int x){ if(x < 3){ return x; } else if(x % 2 == 0){ // return f(x 展开全文
头像 王钲超
发表于 2025-03-23 23:17:59
import sys import math def times_divisible_by_two(n): """n > 1""" assert n > 1 cnt2 = 0 while n & 展开全文