File tree 1 file changed +31
-0
lines changed
1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -277,6 +277,37 @@ var lastStoneWeightII = function (stones) {
277
277
};
278
278
```
279
279
280
+ C版本
281
+ ``` c
282
+ #define MAX (a, b ) (((a) > (b)) ? (a) : (b))
283
+
284
+ int getSum (int * stones, int stoneSize) {
285
+ int sum = 0, i;
286
+ for (i = 0; i < stoneSize; ++i)
287
+ sum += stones[ i] ;
288
+ return sum;
289
+ }
290
+
291
+ int lastStoneWeightII(int* stones, int stonesSize){
292
+ int sum = getSum(stones, stonesSize);
293
+ int target = sum / 2;
294
+ int i, j;
295
+
296
+ // 初始化dp数组
297
+ int *dp = (int*)malloc(sizeof(int) * (target + 1));
298
+ memset(dp, 0, sizeof(int) * (target + 1));
299
+ for (j = stones[0]; j <= target; ++j)
300
+ dp[j] = stones[0];
301
+
302
+ // 递推公式:dp[j] = max(dp[j], dp[j - stones[i]] + stones[i])
303
+ for (i = 1; i < stonesSize; ++i) {
304
+ for (j = target; j >= stones[i]; --j)
305
+ dp[j] = MAX(dp[j], dp[j - stones[i]] + stones[i]);
306
+ }
307
+ return sum - dp[target] - dp[target];
308
+ }
309
+ ```
310
+
280
311
281
312
TypeScript版本
282
313
You can’t perform that action at this time.
0 commit comments