文章

【GESP】C++三级练习 luogu-p1567, 统计天数

GESP三级,一维数组,多层循环和分支练习,难度★✮☆☆☆。

luogu-P1567 统计天数

题目要求

题目描述

炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。

经历千辛万苦,他收集了连续 $N(1 \leq N \leq 10^6)$ 天的最高气温数据。

现在,他想知道最高气温一直上升的最长连续天数。

输入格式

第 1 行:一个整数 $N$ 。$1 \leq N \leq 10^6$

第 2 行:$N$个空格隔开的整数,表示连续 $N$ 天的最高气温。$0 \leq$ 最高气温 $\leq 10^9$ 。

输出格式

1 行:一个整数,表示最高气温一直上升的最长连续天数。

样例输入 #1

1
2
10
1 2 3 2 4 5 6 8 5 9

样例输出 #1

1
5

题目分析

解题思路

  1. 读取输入的天数 $N$ 和每天的最高气温数据。
  2. 初始化一个变量 total_max,用于存储最高气温一直上升的最长连续天数,初始值为1。
  3. 如果输入的天数为1,则直接输出1,因为只有1天,最高气温一直上升的最长连续天数为1。
  4. 从第二天开始遍历每天的最高气温数据。
  5. 对于每天,如果当前天的最高气温大于上一天的最高气温,则当前最高气温一直上升的连续天数加1。
  6. 如果当前天的最高气温不大于上一天的最高气温,则更新最高气温一直上升的最长连续天数,并重置当前最高气温一直上升的连续天数为1。
  7. 遍历完毕后,更新最高气温一直上升的最长连续天数。
  8. 输出最高气温一直上升的最长连续天数。


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cmath>
#include <iostream>

using namespace std;
int a[1000001];
int main() {
    int n; // 定义一个整型变量n,用于存储输入的天数
    cin >> n; // 从标准输入流中读取n的值
    for (int i = 0; i < n; i++) {
        cin >> a[i]; // 读取并存储每天的最高气温
    }
    int total_max = 1; // 初始化一个整型变量total_max,用于存储最高气温一直上升的最长连续天数,初始值为1
    if (n == 1) { // 如果输入的天数为1
        cout << total_max; // 直接输出1,因为只有1天,最高气温一直上升的最长连续天数为1
        return 0; // 程序结束
    }
    int last_num = a[0]; // 初始化一个整型变量last_num,用于存储上一天的最高气温,初始值为第一天的最高气温
    int cur_max = 1; // 初始化一个整型变量cur_max,用于存储当前最高气温一直上升的连续天数,初始值为1
    for (int i = 1; i < n; i++) { // 从第二天开始遍历
        if (a[i] > last_num) { // 如果当前天的最高气温大于上一天的最高气温
            cur_max++; // 当前最高气温一直上升的连续天数加1
        } else { // 如果当前天的最高气温不大于上一天的最高气温
            total_max = max(total_max, cur_max); // 更新最高气温一直上升的最长连续天数
            cur_max = 1; // 重置当前最高气温一直上升的连续天数为1
        }
        last_num = a[i]; // 更新上一天的最高气温为当前天的最高气温
    }
    total_max = max(total_max, cur_max); // 遍历完毕后,更新最高气温一直上升的最长连续天数
    cout << total_max; // 输出最高气温一直上升的最长连续天数
    return 0; // 程序结束
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权