题目: 有一个长为n的数列a. 请求出这个序列中最长上升子序列的长度. 最长上升子序列的数字之间可以有间隔.
即最长上升子序列(LIS, Longest Increasing Subsequence), 例如: n=5, a={4,2,3,1,5}, result=3(2,3,5)
核心代码如下:
int max = 0; for(int i=0;i<n;i++){ //依次进行dp[i]之前的所有进行计算,初始化设为1 dp[i]=1; for(int j=0;j<i;j++){ if(dp[j]<dp[i]]){ dp[i]=Math.max(dp[i],dp[j]+1); } //依次对每一个dp[i] max = Math.max(dp[i],max); } }
[/size]