C语言 动态规划——最大连续子序列和 代码
时间: 2023-07-08 14:07:20 浏览: 111
动态规划求最大连续子序列和的C语言代码如下:
```c
#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int maxSubArray(int* nums, int numsSize){
int dp[numsSize];
dp[0] = nums[0];
int maxSum = dp[0];
for (int i = 1; i < numsSize; i++) {
dp[i] = max(nums[i], dp[i - 1] + nums[i]);
maxSum = max(maxSum, dp[i]);
}
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("%d", maxSum);
return 0;
}
```
该代码使用了动态规划的思想,使用一个数组dp来记录以每个元素为结尾的最大连续子序列和。具体而言,dp[i]表示以nums[i]结尾的最大连续子序列和。初始状态为dp[0] = nums[0],然后遍历整个数组,计算出每个dp[i]的值,并同时更新最大值maxSum。最后返回maxSum即可。
阅读全文