输入长度为𝑛的一个自然数序列,要求输出序列中最长连号的长度。 连号指在序列中,从小到大的连续自然数。 Input 第一行,一个整数𝑛。 第二行,𝑛个整数𝑎𝑖,相邻两个数之间用空格隔开。 Output 一个数,最长连号的长度。 简单方法
时间: 2024-10-04 13:02:10 浏览: 30
要解决这个问题,你可以使用一个简单的遍历和比较的方法。首先读取输入的自然数序列,然后维护两个变量:`max_len` 记录当前找到的最长连续序列的长度,`current_len` 记录当前连续序列的长度。对于每个数字,检查它是否比前一个数字大 1(如果它们构成一个连号),如果是,则更新 `current_len`;如果不是,或遇到新数字时,检查 `current_len` 是否大于 `max_len`,如果是则更新 `max_len` 并重置 `current_len`。
以下是一个简单的 C 语言程序来实现这个逻辑:
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int max_len = 1, current_len = 1;
for (int i = 1; i < n; i++) {
if (arr[i] == arr[i - 1] + 1) { // 连续数字
current_len++;
} else { // 非连续数字
max_len = (current_len > max_len) ? current_len : max_len;
current_len = 1;
}
}
// 检查最后一个可能的连续序列
max_len = (current_len > max_len) ? current_len : max_len;
printf("%d\n", max_len);
return 0;
}
```
阅读全文