public class LongSeries {
public static int Long(int []num){
int []dp = new int[num.length];
for(int i = 0;i < dp.length;i++){
dp[i] = 1; //dp[i]代表以num[i]这个数字结尾的最长递增子序列,dp[i]至少为1
}
for(int i = 0;i < num.length;i++){
for(int j = 0;j < i;j++){
//找到前一个比它小的值的序号,序列就+1
if(num[j] < num[i]){
dp[i] = Math.max(dp[i],dp[j] + 1); //状态方程。划分子问题
}
}
}
int x = 0;
int max = 0;
//找到dp[i]中的最大值
for(int i = 0;i < dp.length;i++){
max = Math.max(x, dp[i]);
}
return max;
}
public static void main(String[] args) {
int []num = {1,4,3,4,2,3,5};
int max = Long(num);
System.out.println(max);
}
}
【算法设计与分析】最长递增子序列(动态规划)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.