PTA 最长连续递增子序列

200 阅读1分钟

给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。

输入格式:

输入第1行给出正整数n(≤105);第2行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。

输入样例:

15
1 9 2 5 7 3 4 6 8 0 11 15 17 17 10
结尾无空行

输出样例:

3 4 6 8
结尾无空行

代码:

# include <iostream>
using namespace std;
int main()
{
    int n,num,max;
    cin >> n;
    int a[n] , b[n];
    for(int i = 0; i < n; i++) 
        cin >> a[i];
    num=max=1;
    b[0]=a[0]; 
    for(int i=0; i<n-1; i++)
    {
        if(a[i+1]>a[i])
            num++;
        else
            num=1;
        if(num>max)
            {
                max=num;
                for(int j=0;j<max;j++)
                {
                    b[j]=a[i-j+1];
                }
            }
    }
    for (int i=max-1; i >0 ; i--)
        cout << b[i] << ' ';
    cout << b[0];
    return 0;
}

提交结果: