普及组CSP-J初赛程序阅读训练03
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for(int i = 0; i < n; i++)
cin >> a[i];
vector<int> dp(n + 1, 0);
for(int i = 0; i < n; i++) {
if(i >= 2)
dp[i] = max(dp[i - 1], dp[i - 2] + a[i]);
else
dp[i] += a[i];
if(i >= 1)
dp[i] = max(dp[i], dp[i - 1]);
}
int ans = 0;
for(int i = 0; i < n; i++) {
ans = max(ans, dp[i]);
}
cout << ans << endl;
return 0;
}
判断题
第 1 题
若输入 5 2 7 9 3 1,则输出为 12。
{{ select(1) }}
- 正确
- 错误
第 2 题
这段代码对应的状态转移方程为;初值为 。
{{ select(2) }}
- 正确
- 错误
第 3 题
(2分)在主函数中,访问不会发生越界错误。
{{ select(3) }}
- 正确
- 错误
选择题
第 4 题
当输入的数组为 {2, 1, 1, 2} 时,程序的输出为( )。
{{ select(4) }}
- 1
- 2
- 3
- 4
第 5 题
若将第 13 行改为
dp[i] = max(dp[i-1], dp[i-2] - a[i]),
则当输入的 ( a ) 数组为 {10, 1, 0, 25, 3} 时,程序的输出为( )。
{{ select(5) }}
- 1
- 10
- 35
- 25
第 6 题
(4分)当输入的 ( a ) 数组为 {0, 2, 3, 0, 5, 6, 0, 8, 9} 时,程序的输出为( )。
{{ select(6) }}
- 18
- 33
- 34
- 2
