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];
}
}