C语言用动态规划方法求解最大连续子序列的和代码
时间: 2023-12-21 08:04:42 浏览: 74
用动态规划法求解最大子段和问题 C语言实现
5星 · 资源好评率100%
以下是用动态规划方法求解最大连续子序列和的C语言代码:
```c
#include <stdio.h>
int max(int a, int b)
{
return a > b ? a : b;
}
int max_sum_subsequence(int arr[], int n)
{
int dp[n]; // 用来存储以 i 结尾的最大连续子序列和
dp[0] = arr[0]; // 初始化
for (int i = 1; i < n; i++)
{
dp[i] = max(arr[i], dp[i-1] + arr[i]); // 状态转移方程
}
int max_sum = dp[0];
for (int i = 1; i < n; i++)
{
if (dp[i] > max_sum)
max_sum = dp[i];
}
return max_sum;
}
int main()
{
int arr[] = {1, -2, 3, 10, -4, 7, 2, -5};
int n = sizeof(arr) / sizeof(arr[0]);
int max_sum = max_sum_subsequence(arr, n);
printf("最大连续子序列的和为:%d\n", max_sum);
return 0;
}
```
希望对你有所帮助!
阅读全文