浏览 1620 次
锁定老帖子 主题:递增子序列
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-20
最后修改:2010-05-20
/** * 数组A中存放很多数据,比如A={1,2,3,4,3,2,1,4,8,9,10};其中1,2,3,4/1,4,8,9,10都是递增子序列,1,4,8,9,10是最长的递增子序列。 * * 寻找数组中的最长子序列,返回起始的索引值,如果没有递增子序列,那么返回-1 * * * @author fangtengfei * @date 2010-5-16 */ public class MaxIncreSeq { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 3, 2, 1, 4, 8, 9, 10 }; int a1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 2, 1, 4, 8, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 1, 2, 3 }; findMaxInCreSeqIndex(a1); } private static int findMaxInCreSeqIndex(int[] a) { // 最长序列长度 int MaxInCreSeqLength = 0; int maxInCreSeqIndex = 0; // 临时序列长度 int tempInCreSeqLength = 1; int tempInCreSeqIndex = 0; // 增长,则临时序列加一,不增长,则判断是否大于已存的最大序列,大则取代之 for (int i = 0; i < a.length - 1; i++) { if (a[i + 1] > a[i]) { tempInCreSeqLength++; } else { if (tempInCreSeqLength > MaxInCreSeqLength) { MaxInCreSeqLength = tempInCreSeqLength; maxInCreSeqIndex = tempInCreSeqIndex; } tempInCreSeqLength = 1; tempInCreSeqIndex = i + 1; } // 如果序列一直增长到最后一个元素 if (i == a.length - 2) { if (tempInCreSeqLength > MaxInCreSeqLength) { MaxInCreSeqLength = tempInCreSeqLength; maxInCreSeqIndex = tempInCreSeqIndex; } } } System.out.println(MaxInCreSeqLength); System.out.println(maxInCreSeqIndex); return -1; } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |