有数组int a[] = {1, 2, 3, 4, 5, 8, 6, 3, 0, 6, 2, 4, 8, 1, 0, 8, 5, 6, 2, 5, 9, 10, 8, 6};
打印出升序的最长的一个子序列,比如这里从1开始到8的序列最长。
这里包含两个问题:
1 找到升序的序列:
序列可以用一个二元组表示 {起始位置,长度},或者{起始位置,终止位置} 或者 {终止位置,长度}。三者等价。
2 在找到的序列中,找到最长的一个。
那么可以在符合条件的二元组中遍历,找到长度最大的。
因为这个题目说找到一个就可以,那么可以将两个问题放到一块做。
嗯,不多说,看代码
int a[] = {1, 2, 3, 4, 5, 8, 6, 3, 0, 6, 2, 4, 8, 1, 0, 8, 5, 6, 2, 5, 9, 1