赞
踩
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(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 <stdio.h> int main() { int a; int n = 1,num=0,x=0; int arr[1000]; int arr1[1000]; scanf("%d", &a); for (int i = 0; i < a; i++) { scanf("%d", &arr[i]); } for (int i = 1; i <= a; i++) { if (arr[i-1]<arr[i]) { n++; } else { if (n > num) { num = n; x = 0; for (int j = i-n; j < i; j++) { arr1[x] = arr[j]; x++; } n = 1; } } } //printf("%d", num); for (int i = 0; i < num; i++) { printf("%d", arr1[i]); if (i != num - 1) { printf(" "); } } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。