public class Solution {
public int LastStoneWeightII(int[] stones) {
int sum=0;
for(int i=0;i<stones.Length;i++){
sum+=stones[i];
}
int target=sum/2;
int[] dp = new int[target+1];
for(int i=0;i<stones.Length;i++){
for(int j=target;j>=stones[i];j--){
dp[j]=Math.Max(dp[j],dp[j-stones[i]]+stones[i]);
}
}
return sum-dp[target]-dp[target];
}
}
与前一篇文章的分割子集等和相似。