这道题用动规很简单呀,不需要搜索
查看原帖
这道题用动规很简单呀,不需要搜索
1609773
wangxiaochai楼主2024/12/26 22:23

设置一个 dp 数组,从 2 到 n 都扫一遍,核心代码如下:

dp[1] = 0;
for (int i=2; i<=n; i++)
{
    if (i%2==0)
        dp[i] = min(dp[i-1]+1, dp[i/2]+1);
    else dp[i] = dp[i-1] + 1;
    dp[i-1] = min(dp[i-1], dp[i]+1);
}

然后用 O( N )的时间复杂度就可以出解了。

2024/12/26 22:23
加载中...