首页
IT
登录
6mi
u
盘
搜
搜 索
IT
数据结构(最大子列和问题)
数据结构(最大子列和问题)
xiaoxiao
2021-04-17
35
/
我简单的说下做法:(今天找了几道数据结构的题目来做)
//在这一遍扫描数组当中,从左到右记录当前子序列的和temp_sum,若这个和不断增加,那么最大子序列的和max也不断增加(不断更新max)。
//如果往前扫描中遇到负数,那么当前子序列的和将会减小。此时temp_sum 将会小于max,当然max也就不更新。如果temp_sum降到0时,
//说明前面已经扫描的那一段就可以抛弃了,这时将temp_sum置为0。然后,temp_sum将从后面开始将这个子段进行分析,
//若有比当前max大的子段,继续更新max。这样一趟扫描结果也就出来了。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<string>
using
namespace
std
;
const
int
maxn
=
100010
;
int
k
,
a
[
maxn
];
int
main
()
{
scanf
(
"%d"
,
&
k
);
for
(
int
i
;
i
<
k
;
i
++
)
{
scanf
(
"%d "
,
&
a
[
i
]);
}
int
i
;
int
tempsum
=
0
,
maxn
=
0
;
for
(
i
=
0
;
i
<
k
;
i
++
)
{
tempsum
+=
a
[
i
];
if
(
tempsum
>
maxn
)
maxn
=
tempsum
;
else
if
(
tempsum
<
0
)
tempsum
=
0
;
}
printf
(
"%ld
\n
"
,
maxn
);
//这里我错了好几遍!!!输出是整型类型没看清!
return
0
;
}
转载请注明原文地址: https://ju.6miu.com/read-674042.html
技术
最新回复
(
0
)