求数组最大子序列的和
来源:互联网 发布:steam网络不稳定 编辑:程序博客网 时间:2024/05/15 23:53
题目:给出数组{4,-3,5,-2,-1,2,6,-2},求子序列的最大和。
分别用一下两种方法解决。
#include <stdio.h>// 方法1: 分治法//时间复杂度 O(NlogN)int max3(int num1 , int num2 , int num3){ int max = num1; if(max<num2)max= num2; if(max<num3)max=num3; return max;}int maxSubSum(int array[],int start, int end){ int maxLeftSum , maxRightSum; int maxLeftBorderSum,maxRightBorderSum; int leftBorderSum,rightBorderSum; int middle,i; if(start == end){ if(array[start] >0) return array[start]; else return 0; } middle = (start+ end)/2; //递归求解左半部分最大子序列和 maxLeftSum = maxSubSum(array, start, middle); //递归求解右半部分最大子序列和 maxRightSum = maxSubSum(array, middle+1, end); //求解中间部分的最大子序列和 leftBorderSum=0,maxLeftBorderSum=0; for(i = middle;i>=start;i--){ leftBorderSum+=array[i]; if(leftBorderSum>maxLeftBorderSum) maxLeftBorderSum = leftBorderSum; } rightBorderSum =0,maxRightBorderSum=0; for (i=middle+1; i<=end; i++) { rightBorderSum+=array[i]; if(rightBorderSum>maxRightBorderSum){ maxRightBorderSum = rightBorderSum; } } return max3(maxLeftSum, maxRightSum, maxLeftBorderSum+maxRightBorderSum);}//方法2 时间复杂度 o(N)int getMaxSubSum(int array[],int start,int end){ int currentSum = 0, maxSum =0; for(int i = start;i <=end;i++){ currentSum+=array[i]; if(currentSum<0) currentSum= array[i]; if(currentSum>maxSum){ maxSum = currentSum; } } return maxSum;}int main(int argc, const char * argv[]) { // insert code here... int a[] = {4,-3,5,-2,-1,2,6,-2}; //int max = maxSubSum(a, 0, 7); int max = getMaxSubSum(a, 0, 7); printf("%d",max); return 0;}
0 0
- 求数组的最大子序列和
- 求数组最大子序列的和
- 求数组最大连续子序列和
- 求数组子序列最大和的算法
- 【面试】求数组子序列的最大和
- 求首尾相连数组的最大子序列和
- 分治法求数组最大连续子序列的和
- 求数组的连续子序列最大和
- 求数组中和最大的子序列
- 求数组中和最大的子序列
- 求一个数组的最大子序列
- 求最大子数组/子序列/子段和问题
- 求数组最大子数组的和
- 求最大子序列的和
- 求连续子序列的最大和
- 求最大子序列的和
- 求最大连续子序列的和
- 求最大连续子序列的和
- JsonFormat 弹窗控件
- Linux学习笔记9
- 请大家协助做一个调查,谢谢!
- cf 653
- HTML链接
- 求数组最大子序列的和
- //链表的原地逆转
- HDU-4965 Fast Matrix Calculation (矩阵快速幂)
- 利用NLTK在Python下进行自然语言处理
- leetcode——100—— Same Tree
- Neville算法
- csdn 要突破 千里之外 的称号需要多少积分或则排名
- struts2 中constant属性
- Ubuntu14下cuda-7.5、tensorflow安装(enabling cuda 3.0)