PTA 7-4 最长连续递增子序列 (20 分)

    xiaoxiao2022-06-25  245

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

    输入格式:

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

    输出格式:

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

    输入样例:

    15 1 9 2 5 7 3 4 6 8 0 11 15 17 17 10

    输出样例:

    3 4 6 8 #include<stdio.h> #define LIST_SIZE 100000 int main() { int list[LIST_SIZE]; int maxpoint = 0,maxlen = 0;//记录最长索引和最长序列长度 int point = 0,len = 0;//记录子列的开始位置和长度 int n,i = 0; scanf("%d",&n); for(i = 0;i<n;i++) { scanf("%d",&list[i]); } i = 0; while(i < n) { if(i == LIST_SIZE - 1) { break; } if(list[i] >= list[i+1]) //不为递增 { point = i+1; len = 0; i++; } else{ len++; i++; } if(maxlen < len) { maxlen = len; maxpoint = point; } } for(i = maxpoint;i<=maxpoint+maxlen-1;i++) { printf("%d ",list[i]); } printf("%d",list[maxpoint+maxlen]); return 0; }

     


    最新回复(0)