menu Home Tags Archives Video About
算法-从第一个元素开始,计算累和的最大值

一言加载中...

题如下:
describe

在这里只使用了10个数字,来计算从第一个元素开始,累和的最大值;

C++代码如下(解释在代码里,就不过多阐述了):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<iostream>
using namespace std;

class Max
{
private:
int a[10];
int highNum; //从第0个元素开始,连续正数的个数
int currentMax; //从第0个元素开始,连续正数的和
int latterMax; //从第一个负数开始累和遍历出最大值
public:
void setNum(); //赋值
void findHighNum(); //寻找highNum;
void getlatterMax(); //获取latterMax;
};

void Max::setNum()
{
a[0]=3;
a[1]=7;
a[2]=-1;
a[3]=3;
a[4]=5;
a[5]=-7;
a[6]=8;
a[7]=4;
a[8]=-5;
a[9]=1;
}
void Max::findHighNum()
{
int i=0;
currentMax=0;

while(a[i]>=0){
currentMax+=a[i];
i++;
}
highNum=i-1;
}
void Max::getlatterMax()
{
int temp=0; //累和的值
int max=0; //最终最大和
for(int i=highNum+1;i<10;i++)
{
temp+=a[i];
if(temp>max)
{
max=temp;
}
}
latterMax=max;
cout<<"最大值为:"<<latterMax+currentMax<<endl;
cout<<"结束";
}


int main(){
Max max;
max.setNum();
max.findHighNum();
max.getlatterMax();
}

如有问题,欢迎指出,谢谢。

2017.10.12
Tony-Chen

人不逼自己一把,永远不知道自己有多优秀!!

评论