子序列(完美世界笔试题)
子序列(完美世界笔试题)
题目:
给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱) 例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},长度为6。
输入描述:
第一行包含一个整数T,代表测试数据组数。
对于每组测试数据: N-数组的长度
a1 a2 … an (需要计算的数组)
保证: 1<=N<=3000,0<=ai<=MAX_INT.
输出描述:
对于每组数据,输出一个整数,代表最长递增子序列的长度。
输入例子:
2
7
89 256 78 1 46 78 8
5
6 4 8 2 17
输出例子:
3
3
java版本代码实现:
package cn.cat.test; public class Test { /** 子序列(完美世界笔试题) * @Description: * @author gwj * @Created 2017年9月7日 下午3:31:34 * @param args */ public static void main(String[] args) { int[] data = new int[]{1, 3, 5, 2, 4, 6, 7, 8}; int finalMaxSeq = 0; for (int i = 0; i < data.length - 1; i++) { int curNum = data[i]; int maxSeq = 1; for (int j = i + 1; j < data.length; j++) { if (curNum < data[j]) { curNum = data[j]; maxSeq++; } } if (maxSeq > finalMaxSeq) { finalMaxSeq = maxSeq; } } System.out.println("最大子系列长度为:" + finalMaxSeq); } }