#include <iostream>
#include <vector>
using namespace std;
int compute(vector<int> &cost) {
int n = cost.size();
vector<int> dp(n + 1, 0);
dp[1] = cost[0];
for (int i = 2; i <= n; i++) {
dp[i] = min(dp[i - 1], dp[i - 2]) + cost[i - 1];
}
return min(dp[n], dp[n - 1]);
}
int main() {
int n;
cin >> n;
vector<int> cost(n);
for (int i = 0; i < n; i++) {
cin >> cost[i];
}
cout << compute(cost) << endl;
return 0;
}
判断题
1) 当输入的cost数组为 {10,15,20}时,程序的输出为15( )
2) 如果将dp[i-1]改为dp[i-3],程序可能会产生编译错误( )
3) (2分)程序总是输出cost数组种的最小的元素( )
选择题
4) 当输入的cost数组为{1,100,1,1,1,100,1,1,100,1}时,程序的输出为()。
5) (4分)如果输入的cost数组为{10,15,30,5,5,10,20},程序的输出为()
6) 若将代码中的min(dp[i-1],dp[i-2])+cost[i-1]修改为dp[i-1]+cost[i-2],输入cost数组为{5,10,15}时,程序的输出为()