DR. 完善程序题-6000
完善程序题-6000
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
完善程序题:最长连续奇偶交替子数组
【问题描述】
给定一个长度为 (n)((1 n 10^5))的整数数组 a,求最长的连续子数组的长度,使得子数组中相邻元素的奇偶性不同(即奇偶交替:奇、偶、奇、偶…… 或 偶、奇、偶、奇……)。
如果整个数组只有一个元素,长度为 1。
【输入格式】
第一行一个整数n
第二行 n个整数,表示数组元素
【输出格式】
一个整数,表示最长连续奇偶交替子数组的长度
【样例输入】
5
1 2 3 4 5
【样例输出】
5
(解释:1(奇),2(偶),3(奇),4(偶),5(奇) 全部满足奇偶交替)
【代码框架】
#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
int cur = ___(1)___; // 当前交替段长度
int ans = ___(1)___; // 最长交替段长度
for (int i = 2; i <= n; i++) {
if ( (a[i] % 2) != (a[i-1] % 2) ) { // 奇偶不同,继续交替
cur++;
} else { // 奇偶相同,交替中断
if (cur > ans) ___(2)___;
cur = 1;
}
___(3)___; // 每次循环后更新答案
}
if (cur > ans) ___(4)___;
cout << ___(5)___;
return 0;
}
【选择题】
- (1) 处应填入? {{ select(1) }}
- A. 0
- B. 1
- C. -1
- D. n
- (2) 处应填入? {{ select(2) }}
- A. ans = cur
- B. cur = ans
- C. ans++
- D. break
- (3) 处应填入? {{ select(3) }}
- A. ans = max(ans, cur)
- B. cur = max(ans, cur)
- C. ans = cur
- D. continue
- (4) 处应填入? {{ select(4) }}
- A. ans = cur
- B. cur = ans
- C. ans = max(ans, cur)
- D. return 0
- (5) 处应填入? {{ select(5) }}
- A. ans
- B. cur
- C. n
- D. 0
【参考答案】
B A A C A