Weiss-(DSAA - in C,2.12)最大子序列求和
来源:互联网 发布:淘宝怎么看卖家信用 编辑:程序博客网 时间:2024/06/13 15:05
最大子序列求和:
A[] = {-7,5,-2,15,1,0,4}
方法1:二分法:
(1).分解成最小子问题
left {-7,5,-2} right {15,1,0} /*1
left {-7,5} right{-2} left{15,1} right {0} /*2
left right {-7} {5} {-2} {15} {1} {0} /*3
left right 同时指向同一个项,这也是下面递归调用的基准情况
int MaxLeftSum ,MaxRightSum ; int MaxLeftBorderSum,MaxRightBorderSum; int LeftBorderSum,RightBorderSum;MaxLeftSum ,MaxRightSum 存放最大值
MaxLeftBorderSum,MaxRightBorderSum 存放横跨边界的最大值。
MaxLeftBorderSum 包含center 的最大和
MaxRightBorderSum 包含center + 1 的最大和
LeftBorderSum 从center 开始到 left 的和
RightBorderSum 从center + 1 开始到 right 的和
int MaxSubsequenceSum( const int A[],int N ){ return MaxSubSum(A,0,N-1);}int Max3( int left,int right,int lr){ if(left >= right && left >= lr) return left; return Max3(right,lr,left);}static int MaxSubSum( const int A[], int Left, int Right ){ int MaxLeftSum ,MaxRightSum ; int MaxLeftBorderSum,MaxRightBorderSum; int LeftBorderSum,RightBorderSum; int Center,i; if (Left == Right) //base case// if (A[Left] > 0) return A[Left]; else return 0; Center = (Left + Right) / 2; //递归调用 MaxLeftSum = MaxSubSum(A, Left, Center); MaxRightSum = MaxSubSum(A, Center+1, Right); //left MaxLeftBorderSum = LeftBorderSum = 0; for (i = Center; i >= Left ;i--) { LeftBorderSum += A[i]; if(LeftBorderSum > MaxLeftBorderSum) MaxLeftBorderSum = LeftBorderSum; } //right MaxRightBorderSum = RightBorderSum = 1; for (i = Center + 1; i <= Right ;i++) { RightBorderSum += A[i]; if (RightBorderSum > MaxRightBorderSum) MaxRightBorderSum = RightBorderSum; } //返回三者最大值 return Max3(MaxLeftSum, MaxRightSum, MaxLeftBorderSum + MaxRightBorderSum);}
0 0
- Weiss-(DSAA - in C,2.12)最大子序列求和
- Weiss-(DSAA - in C,2.12)最大连续子序列乘积
- Weiss-(DSAA - in C,1.3)字谜游戏
- Weiss-(DSAA - in C,2.10)Horner法则求多项式
- Weiss-(DSAA - in C,2.13)求素数的3个方法
- Weiss-(DSAA - in C,2.9/2.16)快速求幂(递归与非递归)
- 最大子序列求和
- 最大子序列求和
- 最大子序列求和
- 最大子序列求和
- 最大子序列求和
- Weiss-(DSAA - in C,2.19) 大小为N的数组A,其主要元素出现次数超过N/2
- 最大子序列求和问题
- 最大子序列求和问题
- 01 最大子序列求和
- maxsum最大子序列求和
- 最大子序列求和问题
- 最大子序列求和问题
- Mysql 内连接、外连接、全连接和交叉连接
- jQuery UI 实例 - 自动完成(Autocomplete)
- Atitit RSA非对称加密原理与解决方案
- Swift中的required修饰符
- Codeforce 723A - The New Year: Meeting Friends
- Weiss-(DSAA - in C,2.12)最大子序列求和
- MySQL 之 count(*) 与 count(1)
- pyspark-combineByKey详解
- 工作总结23 tomcat启动不了项目原因
- Monkey测试批处理
- Android 中点击两次返回键才退出
- 使用Amoeba实现MySQL的主从读写分离
- Atitti.数字证书体系cer pfx attilax总结
- C++函数重载