动态规划 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;
}