所谓动态规划,是指将一个问题拆解为多个子问题,最后通过解决子问题来解决问题。
最优子结构:即通过的得到子问题的最优解来计算问题的最优解。
最长上升子序列:
public int lengthOfLIS(int[] nums) {
int[] dp = new int[nums.length];
dp[0] = 1;
int maxDeep = 1;
for(int i = 1,len=nums.length;i< len;i++){
dp[i] = 1;
for(int j=0; j <i ;j++){
if(nums[i] > nums[j]){
int dpNum = dp[j] + 1;
if(dp[i] < dpNum){
dp[i] = dpNum;
}
}
}
if(dp[i] > maxDeep){
maxDeep = dp[i];
}
}
return maxDeep;
}