高手们,给个思路就行,谢谢各位了.
求数组最长的单调递增子序列,例如 a[10]={1,2,9,5,6,7,4,3,10} 上述数组中最长单调递增子序列是:1,2,5,6,7,8,10。
1,先找出数组中的最大数,记下该数的位置,假设为第a个
2,建个链表,
3,从第一个开始,一直到第a个,依次两两比较,凡是后一个数比前一个数大的(就是满足递增条件的),将前一个数写入链表,不满足条件的(就是后一个数比前一个数小的),跳过该较小数,继续比较
4,一直比较到第a个为止
5,输出链表,释放内存
以上是只有一个最大数的情况,若有n个最大数情况下,假设有3个10,位置分别为第a个,第b个,第c个(假设10为最大),那么就有三个递增序列,分别是第一个到第1个10之间的序列,第a+1个数到第2个10之间的序列,第b+1个数到第三个10之间的序列,也是依次按递增序列先后写进同一个链表,然后在链表中查找哪个序列最长,就输出那个序列,最后记得释放内存就可以了……
我个人的想法啊……呵呵……应该还有更好的……