class Solution {
public int lastStoneWeightII(int[] stones) {
int sum = 0;
for(int temp : stones){
sum += temp;
}
int bagsize = sum/2;
int[] weight = stones;
int[] value = stones;
int[][] dp = new int[weight.length][bagsize+1];
for(int j = weight[0]; j <= bagsize; j++){
dp[0][j] = value[0];
}
for(int i = 1; i < weight.length; i++){
for(int j = 1; j <= bagsize; j++ ){
if(weight[i] > j ){
dp[i][j] = dp[i-1][j];
}else{
dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i]);
}
}
}
return (sum - dp[weight.length-1][bagsize]) - dp[weight.length-1][bagsize];
}
}
最后一块石头的重量II
最新推荐文章于 2024-07-19 19:11:19 发布