OJ链接 :leetcode 343.整数拆分
代码:
class Solution {public int integerBreak(int n) {int[] dp = new int[n+1];//每个n,拆分多个整数乘积的最大值dp [0] = 0;dp [1] = 1; for(int i =2 ; i<=n; i++){for(int j = 0 ; j < i; j++){dp[i] = Math.max(dp[i],Math.max( j*(i-j),j*dp[i-j]));//后边MAX ,两种情况 1.j*(i-j),当前j乘以剩下的i-j整数,只有两个数;//2.j*dp[i-j] , 当前j乘以 多个拆分整数的最大值//前边MAX,当前j位置 ,dp[i]的最大值,多个j比较。}}return dp[n];}
}
OJ链接 :198.打家劫舍
代码:
class Solution {public int rob(int[] nums) {int n =nums.length;int[] dp = new int[n+1];dp[1] = nums[0];for(int i=2; i<=n ;i++){ dp[i] = Math.max (dp[i-1] , nums[i-1]+dp[i-2]);//两种情况//前 n-1 大 (还是) 该位置加前n-2的钱数大;}return dp[n];}
}