题解 | #最小花费爬楼梯#

最小花费爬楼梯

http://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e

动态规划 c++

这借鉴了榜一大佬的解法,但是大佬写的java ,我用c++复现一下吧 。思路也比较简单,就是求每个阶段的最优解。

其实在下面,MinCost中的有一个n+1我没想明白,之气那一直没加,题解也没通过,线了一会才发现,soga,要考虑到最后一个台阶,毕竟你计算的时候都是按照n-1 和n-2 算的。 这下面是我的题解。错误请指正。谢谢。

#include<iostream>
#include<math.h>
#include<iostream>
using namespace std;


int MinCost(int* m, int n) {

    int* dp;
    dp = new int[n+1];
    for (int i = 0; i < n; i++) dp[i] = 0;
    int t = 0;
    for (int i = 2; i <= n; i++) {
        dp[i] = min(dp[i - 2] + m[i - 2], dp[i - 1] + m[i - 1]);
        t = dp[n];
    }
    //ut << dp[n-1] << endl;


    //cout << t << endl;
    return t;
}

int main() {
    int n, min_cost;
    int* m;

    cin >> n;
    m = new int[n];

    for (int i = 0; i < n; i++) {
        cin >> m[i];
    }

    min_cost = MinCost(m, n);
    cout << min_cost << endl;
    return 0;
}

全部评论
问题在 int t = 0
点赞
送花
回复
分享
发布于 2022-07-25 19:56

相关推荐

3 收藏 评论
分享
牛客网
牛客企业服务