最小花费爬楼梯
给定一个整数数组 cost ,其中 cost[i]是从楼梯第 i 个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
数据范围:数组长度满足1 ≤ n ≤ 10^5,数组中的值满足1 ≤ cost[ i ] < 10^4
输入描述:
第一行输入一个正整数n,表示数组cost的长度
第二行输入n个正整数,表示数组cost的值
输出描述:
输出最低花费
解法:
动态规划
#include <iostream>
using namespace std;
#include <vector>
const int N = 1e5 + 10;
int n;
int cost[N];
int dp[N];
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> cost[i];
}
for (int i = 2; i <= n; i++)
{
dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
cout << dp[n] << endl;
return 0;
}
运行结果: