华为OD机试真题-求最小步数-2023年OD统一考试(B卷)

题目描述:

求从坐标零点到坐标点 `n` 的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3 。

> 注意:途径的坐标点可以为负数

输入描述:

坐标点n

输出描述:

输出从坐标零点移动到坐标点n的最小步数

补充说明:

1 <= n <= 10^9

示例1

输入:

4

输出:

2

说明:

从坐标零点移动到4,最小需要两步,即右移2,再右移2

#include 
#include 
using namespace std;

int main() {
    int n;
    cin >> n;
    if(n == 1) {
        cout << 2;
    }
    else if(n == 2) {
        cout << 1;
    }
    else if(n == 3) {
        cout << 1;
    }
    else {
        cout<<(n-4)/3 + 2;
    }
    // vectordp(n+1,0);
    // dp.reserve(n+1);
    // dp[1] = 2;
    // dp[2] = 1;
    // for(int i =3; i<=n; i++) {
    //     dp[i] = min(dp[i-2], dp[i-3]) +1;
    // }
    // cout << dp[n];
    return 0;

}

你可能感兴趣的:(华为OD机试题库2023年,华为od,算法,华为,开发语言)