所谓动态规划,是指将一个问题拆解为多个子问题,最后通过解决子问题来解决问题。
最优子结构:即通过的得到子问题的最优解来计算问题的最优解。
最长上升子序列:
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;}
