c_cpp 达到1的最小步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 达到1的最小步骤相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;

int func (int dp[], int n) {
    if (n==1)
        return 0;
    if (dp[n]!= -1)
        return dp[n];

    int r= func(dp, n-1);
    if (n%2==0)
        r= min(r, func(dp, n/2));
    if (n%3==0)
        r= min(r,func(dp, n/3));
    dp[n]=1+r;

    return 1+r;
}

int main () {
    int n;
    cin>> n;

    int dp[n+1];
    for (int i=0; i<=n;i++)
        dp[i]= -1;
    dp[1]=0;
    cout<< "Minimum steps to reach 1: " << func (dp, n);

}

以上是关于c_cpp 达到1的最小步骤的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 骑士达到目标的最低步数

c_cpp 找到数组中最小和最小的元素

c_cpp 最小的受限回文

c_cpp 最小的生成树

c_cpp 到达终点的最小跳跃次数

c_cpp 递增排序的数组(元素不重复),旋转一定长度后,求数组中最小的数。如{1,2,3,4,5,6},旋转后{4,5,6,1,2, 3},旋转后的数组最小值为1