动态规划最大子数组C实现
时间: 2023-07-08 07:36:29 浏览: 84
好的,下面是动态规划最大子数组的C语言实现。
```c
#include <stdio.h>
#include <limits.h>
int maxSubArray(int* nums, int numsSize){
int max_sum = INT_MIN; // 最大子数组的和,初始化为最小值
int dp[numsSize]; // dp数组,存储以第i个元素结尾的最大子数组的和
dp[0] = nums[0]; // 初始化dp数组
for (int i = 1; i < numsSize; i++) {
dp[i] = nums[i] > dp[i-1]+nums[i] ? nums[i] : dp[i-1]+nums[i]; // 状态转移方程
}
for (int i = 0; i < numsSize; i++) {
if (dp[i] > max_sum) max_sum = dp[i]; // 找出dp数组中的最大值
}
return max_sum; // 返回最大子数组的和
}
int main() {
int nums[] = {-2,1,-3,4,-1,2,1,-5,4};
int numsSize = sizeof(nums) / sizeof(nums[0]);
int max_sum = maxSubArray(nums, numsSize);
printf("Max Subarray Sum: %d\n", max_sum);
return 0;
}
```
以上就是动态规划最大子数组的C语言实现。希望可以帮助到你!
阅读全文