DS. 完善程序题-6001

    客观题

完善程序题-6001

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

完善程序题:最长连续相同元素

【问题描述】
给定一个长度为 (n)((1 \le n \le 10^5))的整数序列,求其中最长的连续相同元素子段。
如果有多个相同最大长度,输出最早出现的那个子段的起始下标长度(下标从1开始)。

【输入格式】
第一行一个整数 (n)
第二行 (n) 个整数

【输出格式】
一行两个整数,分别表示起始位置和长度,中间用空格隔开

【样例输入】

8
1 1 2 3 3 3 4 5

【样例输出】

4 3

(解释:连续3个3,起始位置4,长度3)

【代码框架】

#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 bestLen = 1;      // 最长段长度
    int bestStart = 1;    // 最长段起始位置
    int curStart = 1;     // 当前段起始位置
    for (int i = 2; i <= n; i++) {
        if (a[i] == a[i-1]) {
            cur++;
        } else {
            if (cur > bestLen) {
                bestLen = cur;
                bestStart = ___(1)___;
            }
            cur = 1;
            curStart = ___(2)___;
        }
    }
    if (cur > bestLen) {
        bestLen = cur;
        bestStart = ___(3)___;
    }
    cout << ___(4)___ << " " << ___(5)___;
    return 0;
}

【选择题】

  1. (1) 处应填入? {{ select(1) }}
  • A. curStart
  • B. i
  • C. i - cur + 1
  • D. i - cur
  1. (2) 处应填入? {{ select(2) }}
  • A. i
  • B. i - 1
  • C. curStart
  • D. i - cur
  1. (3) 处应填入? {{ select(3) }}
  • A. curStart
  • B. i
  • C. n - cur + 1
  • D. n
  1. (4) 处应填入? {{ select(4) }}
  • A. bestStart
  • B. curStart
  • C. bestLen
  • D. cur
  1. (5) 处应填入? {{ select(5) }}
  • A. bestLen
  • B. cur
  • C. n
  • D. bestStart

【参考答案】

  1. A
  2. A
  3. A
  4. A
  5. A

市赛题汇总

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