题解:洛谷 P1420 最长连号
【题目来源】
洛谷:P1420 最长连号
【题目描述】
输入长度为 \(n\) 的一个正整数序列,要求输出序列中最长连号的长度。
连号指在序列中,从小到大的连续自然数。
【输入】
第一行,一个整数 \(n\)。
第二行,\(n\) 个整数 \(a_i\),之间用空格隔开。
【输出】
一个数,最长连号的个数。
【输入样例】
10
1 5 6 2 3 4 5 6 8 9
【输出样例】
5
【算法标签】
《洛谷 P1420 最长连号》 #模拟#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
using namespace std; // 使用标准命名空间
/**
* 主函数 - 程序入口
* @return 程序执行状态码(0表示成功)
*/
int main()
{
int n; // 定义变量:数字序列的长度
int t; // 定义变量:当前输入的数字
int pre = -1; // 定义变量:前一个数字,初始化为-1
int mark = 1; // 定义变量:当前连号的长度,初始为1
int max = 1; // 定义变量:最大连号长度,初始为1
cin >> n; // 输入数字序列的长度
// 遍历输入的数字序列
for (int i = 1; i <= n; i++)
{
cin >> t; // 输入当前数字
// 判断当前数字是否与前一个数字构成连号
if (t == pre + 1)
{
mark++; // 如果是连号,当前连号长度加1
}
else
{
mark = 1; // 如果不是连号,重置当前连号长度为1
}
// 更新最大连号长度
if (mark > max)
max = mark;
// 更新前一个数字为当前数字
pre = t;
}
cout << max; // 输出最大连号长度
return 0; // 程序正常结束
}
【运行结果】
10
1 5 6 2 3 4 5 6 8 9
4
浙公网安备 33010602011771号