DS. 完善程序题-6001
完善程序题-6001
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
完善程序题:最长连续相同元素
【问题描述】
给定一个长度为 (n)((1 n 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) 处应填入? {{ select(1) }}
- A. curStart
- B. i
- C. i - cur + 1
- D. i - cur
- (2) 处应填入? {{ select(2) }}
- A. i
- B. i - 1
- C. curStart
- D. i - cur
- (3) 处应填入? {{ select(3) }}
- A. curStart
- B. i
- C. n - cur + 1
- D. n
- (4) 处应填入? {{ select(4) }}
- A. bestStart
- B. curStart
- C. bestLen
- D. cur
- (5) 处应填入? {{ select(5) }}
- A. bestLen
- B. cur
- C. n
- D. bestStart
【参考答案】
- A
- A
- A
- A
- A