题目描述:
求从坐标零点到坐标点 `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;
}