Ai
1 Star 0 Fork 0

黄剑锋/软件工程

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
work3.cpp 2.40 KB
Copy Edit Raw Blame History
黄剑锋 authored 2020-03-11 11:15 +08:00 . work3
#include<iostream>
#include<cstdlib>
using namespace std;
bool g_InvalidInput = false;
int getMaxSum(int *a, int len, int start, int end)
{
if (a == NULL || len <= 0)
{
g_InvalidInput = true;
return 0;
}
g_InvalidInput = false;
start = 0;
end = 0;
if (1 == len)
return a[0];
int curSum = a[0]; //当前子数组和
int maxSum = curSum; //子数组最大和
for (int i = 1; i < len; i++)
{
if (curSum > 0)
curSum += a[i];
else
if (a[i] > curSum) //确定子数组起始位置
{
start = i;
curSum = a[i]; //即使数组全为负,也能得到最大值
}
if (curSum > maxSum)
{
maxSum = curSum;
end = i;
}
}
return maxSum;
}
int getstart(int *a, int len, int start, int end)
{
if (a == NULL || len <= 0)
{
g_InvalidInput = true;
return 0;
}
g_InvalidInput = false;
start = 0;
end = 0;
if (1 == len)
return a[0];
int curSum = a[0]; //当前子数组和
int maxSum = curSum; //子数组最大和
for (int i = 1; i < len; i++)
{
if (curSum > 0)
curSum += a[i];
else
if (a[i] > curSum) //确定子数组起始位置
{
start = i;
curSum = a[i]; //即使数组全为负,也能得到最大值
}
if (curSum > maxSum)
{
maxSum = curSum;
end = i;
}
}
return start;
}
int getend(int *a, int len, int start, int end)
{
if (a == NULL || len <= 0)
{
g_InvalidInput = true;
return 0;
}
g_InvalidInput = false;
start = 0;
end = 0;
if (1 == len)
return a[0];
int curSum = a[0]; //当前子数组和
int maxSum = curSum; //子数组最大和
for (int i = 1; i < len; i++)
{
if (curSum > 0)
curSum += a[i];
else
if (a[i] > curSum) //确定子数组起始位置
{
start = i;
curSum = a[i]; //即使数组全为负,也能得到最大值
}
if (curSum > maxSum)
{
maxSum = curSum;
end = i;
}
}
return end;
}
int main(){
int smax,start,send;
int a[]={-32,-10,33,-23,32,-12,41,-12,1,3,5,-98,70,-21,10,-9,61};
smax=getMaxSum(a,17,0,16);
cout<<"最大的子数组和为:"<<smax<<endl;
start=getstart(a,17,0,16);
cout<<"最大的子数组开始下标为:"<<start<<endl;
send=getend(a,17,0,16);
cout<<"最大的子数组结束下标为:"<<send<<endl;
system("pause");
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/jianfeng8322079/software_engineering.git
git@gitee.com:jianfeng8322079/software_engineering.git
jianfeng8322079
software_engineering
软件工程
master

Search