c语言动态规划求解最大连续子序列的和
时间: 2024-01-25 18:43:09 浏览: 27
下面是一种使用动态规划求解最大连续子序列和的C语言实现:
```c
#include <stdio.h>
int maxSubArray(int* nums, int numsSize) {
int i, maxSum, curSum;
maxSum = curSum = nums[0];
for (i = 1; i < numsSize; i++) {
curSum = (curSum + nums[i] > nums[i]) ? curSum + nums[i] : nums[i];
if (curSum > maxSum) {
maxSum = curSum;
}
}
return maxSum;
}
int main() {
int nums[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
int numsSize = sizeof(nums) / sizeof(nums[0]);
int maxSum = maxSubArray(nums, numsSize);
printf("The max sum of subarray is %d\n", maxSum);
return 0;
}
```
这段代码的基本思路是使用一个变量 `curSum` 记录当前的子序列和,如果加上当前的元素后大于当前元素,则将其加入子序列中,否则从当前元素重新开始构建子序列。同时,使用另一个变量 `maxSum` 记录最大连续子序列的和。最后返回 `maxSum` 即可。