要求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
给定序列,请求出其最长连续上升子列的长度。

注意:是连续上升子序列,不是最长上升子序列。

输入格式:
第一行为一个整数 n (0< n <=1000),代表序列总长度。第二行为用空格分隔 n 个整数。测试用例保证所有整数可以用 int 类型存储。

输出格式:
有一个整数,为给定序列最长连续上升子序列的长度。

输入样例:
15
1 1 2 3 4 5 6 7 3 3 5 5 3 3 9

输出样例:
7

代码

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
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<iostream>
using namespace std;

int main() {

//生成存储空间
int n;
cin >> n;
int* p1 = new int[n];

//输入相应的数据
for (int i = 0; i < n; i++) {
cin >> *(p1 + i);
}

//计数后存到数组里
for (int j = 0; j < n; j++) {
int count = 0;
for (int k = 0; k < n; k++) {
if (*(p1 + j + k + 1) == *(p1 + j + k) + 1) {
count++;
}
else {
break;
}
}
*(p1 + j) = count + 1;
}

//寻找长度的最大值
int temp = *p1;
for (int i = 0; i < n; i++) {
if (*(p1 + i) > temp) {
temp = *(p1 + i);
}
}

delete[]p1;

//输出结果
cout << temp;

return 0;
}