Merge pull request #1492 from KingArthur0205/master

添加 1049.最后一块石头的重量II.md C语言解法
This commit is contained in:
程序员Carl
2022-07-14 08:46:15 +08:00
committed by GitHub

View File

@ -277,6 +277,37 @@ var lastStoneWeightII = function (stones) {
};
```
C版本
```c
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
int getSum(int *stones, int stoneSize) {
int sum = 0, i;
for (i = 0; i < stoneSize; ++i)
sum += stones[i];
return sum;
}
int lastStoneWeightII(int* stones, int stonesSize){
int sum = getSum(stones, stonesSize);
int target = sum / 2;
int i, j;
// 初始化dp数组
int *dp = (int*)malloc(sizeof(int) * (target + 1));
memset(dp, 0, sizeof(int) * (target + 1));
for (j = stones[0]; j <= target; ++j)
dp[j] = stones[0];
// 递推公式dp[j] = max(dp[j], dp[j - stones[i]] + stones[i])
for (i = 1; i < stonesSize; ++i) {
for (j = target; j >= stones[i]; --j)
dp[j] = MAX(dp[j], dp[j - stones[i]] + stones[i]);
}
return sum - dp[target] - dp[target];
}
```
TypeScript版本