5-2 最长连续递增子序列
来源:互联网 发布:c语言大小写字母转换 编辑:程序博客网 时间:2024/05/20 18:50
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。
输入格式:
输入第1行给出正整数nnn(≤105\le 10^5≤105);第2行给出nnn个整数,其间以空格分隔。
输出格式:
在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。
输入样例:
151 9 2 5 7 3 4 6 8 0 11 15 17 17 10
输出样例:
3 4 6 8
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #define maxsize 1000000 using namespace std; typedef int element; typedef struct { element * elem; int length; int listsize; }sq; struct match { int c; int flag; }m; int lintlist(sq & l) { l.elem = (element *)malloc(maxsize * sizeof(element)); if(!l.elem) return -1; l.length = 0; l.listsize = maxsize; return 0; } void creat(sq & l, int n) { for(int i = 0; i < n; i++) cin >> l.elem[i]; l.length = n; } void find(sq & l1, sq & l2) { for(int i = 0; i < l1.length; i++) { int count = 0; for(int j = i; j < l1.length; j++) { if(l1.elem[j] < l1.elem[j + 1]) { count++; l2.elem[i] = count; } else break; } } int max = -1; int flag; for(int i = 0; i < l1.length; i++) { if(max < l2.elem[i]) { max = l2.elem[i]; flag = i; } } for(int i = flag; i < flag + max ; i++) cout << l1.elem[i] << " "; cout <<l1.elem[flag + max ] << endl; } int main() { sq l1, l2; int n; cin >> n; lintlist(l1); creat(l1,n); lintlist(l2); find(l1,l2); return 0; }
0 0
- 5-2 最长连续递增子序列
- 最长连续递增子序列
- 最长连续递增子序列
- 最长连续递增子序列
- 最长连续递增子序列
- 最长连续递增子序列
- 最长连续递增子序列
- 5-3 最长连续递增子序列 (20分)
- 5-1 最长连续递增子序列
- 5-1 最长连续递增子序列 (20分)
- 最长单调"连续"递增子序列
- 求最长连续递增子序列长度
- 单调递增连续最长子序列
- 最长递增子序列(非连续)
- 求最长连续递增公共子序列
- PTA 最长连续递增子序列
- 矩阵中最长连续递增子序列
- 习题3.4 最长连续递增子序列
- 23种设计模式之单例模式
- C++引用函数
- Orthogonal Matching Pursuit(OMP)正交匹配追踪算法学习笔记
- 华为OJ 初级:DNA序列
- curl进行传值(post)
- 5-2 最长连续递增子序列
- 字符串匹配 之 RK(Rabin-Karp)
- codeforces 414C 分治思想运用
- Git小白教程3---远程仓库克隆到本地
- Android中直播视频技术探究之---采集摄像头Camera视频源数据进行推流(采用金山云SDK)
- 从vb的角度看几种简单的排序法
- java之字节流转换为字符流并讲解打印流
- ionic $ionicScrollDelegate.anchorScroll在安卓上不起作用的解决办法
- Android之SDcard存储