最大子段和
来源:互联网 发布:大型无人机价格 知乎 编辑:程序博客网 时间:2024/06/05 04:56
#include "stdio.h"#include "stdlib.h"#include "math.h"#include "string.h"#define N 100int max(int a, int b){ return a>b?a:b;}int MaxSum(int a[N], int left, int right){ //返回数组a[left:right]最大区间和 if(left == right) return a[left]>0?a[left]:0; int mid = (left+right)/2; //中点 int sum1 = MaxSum(a, left, mid); //递归求左段最大和 int sum2 = MaxSum(a, mid+1, right); //递归求有段最大和 /*求左子段中的最优子段和值s1,由中点开始,自右向左搜索 */ int s1 = 0; int lefts = 0; int i; for(i=mid; i>=left; i--) { s1 += a[i]; if(s1 > lefts) lefts = s1; } /*求右子段中的最优子段和值s2,由中点开始,自左向右搜索 */ int s2 = 0; int rights = 0; for(i=mid+1; i<=right; i++) { s2 += a[i]; if(s2 > rights) rights = s2; } int sum3 = rights + lefts; int sum12 = max(sum1, sum2); return max(sum3, sum12);}int main(){ int a[N]; printf("输入元素个数:"); int n; scanf("%d", &n); int i; for(i=0; i<n; i++) scanf("%d", &a[i]); int sum = MaxSum(a, 0, n-1); printf("%d\n", sum); return 0;}
0 0
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- “最大子段和”
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- Linux战地日记—Vim替换字符串
- xp APPIUM 安装初探
- leetcode5 Longest Palindromic Substring
- 平衡二叉树
- Thinkphp学习笔记(1)
- 最大子段和
- 两道简单的笔试题
- hdu--2191
- MP4 文件格式
- Android 使用AsyncTaskLoader获取手机联系人
- codeforces 556B Case of Fake Numbers
- 全排列hash-康拓展开
- codeforces 556A Case of the Zeros and Ones
- LeetCode----Permutation Sequence