一、题目
1、输入描述
输入一个正整数N(0<N≤1000000),表示数据记录的年数第一行,第二行,输入N个用空格隔开的正整数(0<正整数<1e9),表示连续N年的太阳黑子最大数量
2、输出描述
输出一个非负整数,表示太阳黑子最大数量连续增加记录中的最长连续年数。
3、输入样例
8
23124849
4、输出样例
4
二、分析
咱们首先来分析这道题
今天这段注解可以说是保姆级的了
cpp
#include <iostream>
#include <vector>
1、这两行代码包含了iostream
和vector
这两个库。iostream
库用于处理输入输出操作,而vector
库用于处理动态数组。
cpp
int main() {
2、这是主函数的开始。
cpp
int N;
std::cin >> N;
3、声明一个整数变量N
,并从标准输入读取一个值赋给它。这个值表示接下来要输入的记录数量。
cpp
std::vector<int> records(N);
for (int i = 0; i < N; i++) {
std::cin >> records[i];
}
4、创建一个大小为N
的整数向量records
,并循环读取N
个整数,将它们存储在records
向量中。
cpp
int maxIncreasingYears = 0;
int currentIncreasingYears = 1;
5、声明并初始化两个整数变量。maxIncreasingYears
用于存储连续增长的最长年限,而currentIncreasingYears
用于追踪当前连续的增长年限。
cpp
for (int i = 1; i < N; i++) {
if (records[i] > records[i - 1]) {
currentIncreasingYears++;
} else {
if (currentIncreasingYears > maxIncreasingYears) {
maxIncreasingYears = currentIncreasingYears;
}
currentIncreasingYears = 1;
}
}
6、这个循环遍历records
向量,从第二个元素开始(索引为1)。如果当前元素大于前一个元素,则currentIncreasingYears
增加1。否则,如果currentIncreasingYears
大于maxIncreasingYears
,则更新maxIncreasingYears
的值,并将currentIncreasingYears
重置为1。
cpp
if (currentIncreasingYears > maxIncreasingYears) {
maxIncreasingYears = currentIncreasingYears;
}
7、这个if
语句检查在循环结束后currentIncreasingYears
是否仍然是最大的。这确保了我们不会错过在输入序列的最后一段连续增长。
cpp
std::cout << maxIncreasingYears << std::endl;
8、输出连续增长的最长年限。
cpp
return 0;
}
9、主函数结束,并返回0,表示程序成功执行。
三、总结
这段代码读取一个整数N
,然后读取N
个整数,并将它们存储在一个向量中。接着,它找出并输出这些整数中连续增长的最长年限。
四、整合代码
cpp
//给定一系列连续N年的太阳黑子最大数量记录,找出其中最长的连续年份,使得太阳黑子最大数量连续增加。
#include <iostream>
#include <vector>
int main() {
int N;
std::cin >> N;
std::vector<int> records(N);
for (int i = 0; i < N; i++) {
std::cin >> records[i];
}
int maxIncreasingYears = 0;
int currentIncreasingYears = 1;
for (int i = 1; i < N; i++) {
if (records[i] > records[i - 1]) {
currentIncreasingYears++;
} else {
if (currentIncreasingYears > maxIncreasingYears) {
maxIncreasingYears = currentIncreasingYears;
}
currentIncreasingYears = 1;
}
}
if (currentIncreasingYears > maxIncreasingYears) {
maxIncreasingYears = currentIncreasingYears;
}
std::cout << maxIncreasingYears << std::endl;
return 0;
}
感谢您观看,咱们下班列车再会