DR. 完善程序题-6000

    客观题

完善程序题-6000

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

完善程序题:最长连续奇偶交替子数组

【问题描述】
给定一个长度为 (n)((1 \le n \le 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. (1) 处应填入? {{ select(1) }}
  • A. 0
  • B. 1
  • C. -1
  • D. n
  1. (2) 处应填入? {{ select(2) }}
  • A. ans = cur
  • B. cur = ans
  • C. ans++
  • D. break
  1. (3) 处应填入? {{ select(3) }}
  • A. ans = max(ans, cur)
  • B. cur = max(ans, cur)
  • C. ans = cur
  • D. continue
  1. (4) 处应填入? {{ select(4) }}
  • A. ans = cur
  • B. cur = ans
  • C. ans = max(ans, cur)
  • D. return 0
  1. (5) 处应填入? {{ select(5) }}
  • A. ans
  • B. cur
  • C. n
  • D. 0

【参考答案】
B A A C A

市赛题汇总

未参加
状态
已结束
规则
ACM/ICPC
题目
373
开始于
2026-4-24 0:00
结束于
2026-4-24 2:00
持续时间
2 小时
主持人
参赛人数
0