题目描述:
求从坐标零点到坐标点 `n` 的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3 。
> 注意:途径的坐标点可以为负数
输入描述:
坐标点n
输出描述:
输出从坐标零点移动到坐标点n的最小步数
补充说明:
1 <= n <= 10^9
示例1
输入:
4
输出:2
说明:从坐标零点移动到4,最小需要两步,即右移2,再右移2
- #include <iostream>
- #include <vector>
- 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;
- }
- // vector<int>dp(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;
-
- }