动态规划--最长上升子序列

[size=medium]
题目: 有一个长为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]

猜你喜欢

转载自w-sl.iteye.com/blog/2306098