编写一个C++程序,输出第一行包含一个整数 n,代表交了n个月电费第二行包含n个整数,代表每个月交的电费,数字之间以单个空格隔开,输出一个整数m,代表这n个月中有m个月的电费是连续且相同的,并且长度最长
时间: 2024-09-26 22:02:02 浏览: 20
在C++中编写这样的程序,你可以按照以下步骤:
```cpp
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main() {
int n;
std::cout << "请输入交电费的月份数(n): ";
std::cin >> n;
// 创建一个向量存储每月电费
std::vector<int> monthly_bills(n);
for (int i = 0; i < n; ++i) {
std::cout << "请输入第" << (i + 1) << "个月的电费: ";
std::cin >> monthly_bills[i];
}
// 找出最长连续相等电费段及其长度
int max_consecutive相同 = 1, longest_segment_length = 1;
int current_consecutive相同 = 1, current_start = 0;
for (int i = 1; i < n; ++i) {
if (monthly_bills[i] == monthly_bills[i - 1]) {
++current_consecutive相同;
} else {
// 更新最大连续相等的电费段信息
if (current_consecutive相同 > longest_segment_length) {
longest_segment_length = current_consecutive相同;
max_consecutive相同 = monthly_bills[current_start];
}
// 重置当前连续相等的计数
current_consecutive相同 = 1;
current_start = i;
}
}
// 检查最后的连续段是否需要更新记录
if (current_consecutive相同 > longest_segment_length) {
longest_segment_length = current_consecutive相同;
max_consecutive相同 = monthly_bills[current_start];
}
std::cout << "有 " << max_consecutive相同 << " 元的电费连续出现了 " << longest_segment_length << " 个月。\n";
return 0;
}
```
阅读全文