编程之美2.14扩展问题2 求数组的子数组之和的最大值并给出子数组的起始终止位置
2013-04-12 18:15
393 查看
#include <iostream>
#include <assert.h>
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;
int maxSum(int *a,int n,int &start,int &end)
{
if(n<=0)
{
return 0;
}
int maxSum=a[n-1],sum=a[n-1];
start=n-1; end=n-1;
for(int i=n-2;i>=0;i--)
{
if(sum<=0)
{
end=i;
sum=0;
}
sum+=a[i];
if(sum>maxSum)
{
maxSum=sum;
start=i;
}
}
return maxSum;
}
int main()
{
int a[]={1,-2,3,5,-3,2};
int n=6;
int start,end;
int sum=maxSum(a,n,start,end);
cout<<"最大值是 "<<sum<<"开始位置是 "<<start<<"结束位置是 "<<end<<endl;
getchar();
return 0;
}
#include <assert.h>
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;
int maxSum(int *a,int n,int &start,int &end)
{
if(n<=0)
{
return 0;
}
int maxSum=a[n-1],sum=a[n-1];
start=n-1; end=n-1;
for(int i=n-2;i>=0;i--)
{
if(sum<=0)
{
end=i;
sum=0;
}
sum+=a[i];
if(sum>maxSum)
{
maxSum=sum;
start=i;
}
}
return maxSum;
}
int main()
{
int a[]={1,-2,3,5,-3,2};
int n=6;
int start,end;
int sum=maxSum(a,n,start,end);
cout<<"最大值是 "<<sum<<"开始位置是 "<<start<<"结束位置是 "<<end<<endl;
getchar();
return 0;
}
相关文章推荐
- 编程之美2.14扩展问题2 求数组的子数组之和的最大值并给出子数组的起始终止位置
- 编程之美2.14 子数组之和的最大值 扩展问题(首尾相连)
- 求子数组之和的最大值——编程之美 2.14 扩展问题 正确实现
- 编程之美2.14扩展问题1 求子数组和的最大值(首尾可以相连)
- 求子数组之和的最大值——编程之美 2.14 扩展问题 正确实现
- 编程之美2.14扩展问题1 求子数组和的最大值(首尾可以相连)
- 编程之美2.14扩展问题1 求子数组和的最大值(首尾可以相连)
- 编程之美寻找数组中的最大值和最小值以及扩展问题
- 编程之美2.10寻找数组中的最大值和最小值扩展问题Java版
- 《编程之美》读书笔记(十二):“求数组的子数组之和的最大值”扩展问题
- 求最大子数组的和,以及求该最大子数组的起始位置和末尾位置
- 《编程之美》读书笔记(十一):“求二叉树中节点的最大距离”扩展问题
- 编程之美2.14 求数组的子数组之和的最大值
- 求连续子数组的最大和,并记录其起始结束位置
- 编程之美2.14 求数组的子数组之和的最大值
- 编程之美2.14 求子数组和的最大值(首尾相连)
- 编程之美--求数组的子数组之和的最大值--扩展问题
- 编程之美:2.14 求数组的子数组之和的最大值和最小值(动态规划)
- 编程之美之2.14 求数组的子数组之和的最大值
- 编程之美2.14——求数组的子数组之和的最大值