有一个数组 ins[] ,d(i)代表以ins[i]结尾的最长升序子序列的长度。
状态转移方程是 d(i) = max{d(i),d(j)+1}(j < i; ins[j]<= ins[i])
public class Main {
public static void main(String[] args) {
int[] ints = {3,5,2,7,8,3};
int len = lis(ints);
System.out.println(len);
}
public static int lis(int[] ints) {
int len = 1;
int[] d = new int[ints.length];
for (int i = 0; i < ints.length; i++) {
d[i] = 1;
for (int j = 0; j < i; j++) {
if(ints[j] <= ints[i] && d[j]+1 >d[i])
d[i] = d[j] + 1;
}
if(d[i] > len)
len = d[i];
}
return len;
}
}