zoukankan
html css js c++ java
求一组数中连续的几个数之和最大值
给定一组数,有正有负,求连续的几个数之和的最大值?用程序设计实现。这是一道面试题目,鄙人只是总结了两种方法,如果朋友你有更好的方法来解决这个问题,希望你能回复,与大家分享一下。
/**/
///
<summary>
///
最笨的方法
///
</summary>
///
<param name="a"></param>
///
<returns></returns>
public
int
getMax(
int
[] a)
{
//不能定义max为0
int
max
=a[
0]
,temp
=
0
;
if
(a.Length
==
0
)
{
max
=
0
;
return
max;
}
if
(a.Length
==
1
)
{
max
=
a[
0
];
//
或者为0,如果一个元素也不取
return
max;
}
for
(
int
i
=
0
; i
<
a.Length; i
++
)
{
for
(
int
j
=
i; j
<
a.Length; j
++
)
{
temp
=
temp
+
a[j];
if
(temp
>
max)
{
max
=
temp;
}
}
temp
=
0
;
}
return
max;
}
/**/
///
<summary>
///
第二种方法 将相邻的正数和零、负数整合成一个数,最后再比较
///
这样做,最糟糕的就是怕集合的元素都是正负交替出现
///
</summary>
///
<param name="a"></param>
///
<returns></returns>
public
int
SegetMax(
int
[] a)
{
int
max
=
a[
0]
,temp
=
0
, plusTemp
=
0
,negTemp
=
0
;
int
i
=
0
,j
=
0
;
List
<
int
>
list
=
new
List
<
int
>
();
if
(a.Length
==
0
)
{
max
=
0
;
return
max;
}
if
(a.Length
==
1
)
{
max
=
a[
0
];
return
max;
}
while
(i
<
a.Length)
{
if
(a[i]
>=
0
)
{
while
(j
<
a.Length
&&
a[j]
>=
0
)
{
plusTemp
=
plusTemp
+
a[j];
j
++
;
}
i
=
j;
list.Add(plusTemp);
plusTemp
=
0
;
}
else
if
(a[i]
<
0
)
{
while
(a[j]
<
0
&&
j
<
a.Length)
{
negTemp
=
negTemp
+
a[j];
j
++
;
}
i
=
j;
list.Add(negTemp);
negTemp
=
0
;
}
}
for
(
int
p
=
0
; p
<
list.Count; p
++
)
{
for
(
int
k
=
p; k
<
list.Count; k
++
)
{
temp
=
temp
+
list[k];
if
(temp
>
max)
{
max
=
temp;
}
}
temp
=
0
;
}
return
max;
}
第二种方法最后验证是错误的。
int[] a ={ -1000000,-1,-3,-8728272,-8383828,-009993939 };
如果是这样,这种算法就存在问题,看来思路还是短路了。
查看全文
相关阅读:
20165301结对编程项目-四则运算 (第二周)
20165301第八周课下作业
20165301 2017-2018-2 《Java程序设计》第八周学习总结
20165301实验二java面向对象程序设计
20165301结对编程项目-四则运算 (第一周)
2018-2019-1 20165306 《信息安全系统设计基础》第三周学习总结
2018-2019-1 20165306《信息安全系统设计基础》第一周学习总结
20165306 2017-2018-2《Java程序设计》课程总结
2017-2018-2 20165306 实验五《网络编程与安全》实验报告
2017-2018-2 20165306 实验四《Android开发基础》实验报告
原文地址:https://www.cnblogs.com/yank/p/1103189.html
最新文章
20175213 2018-2019-2 《Java程序设计》第9周学习总结
20175213吕正宏 MyCP(课下任务,必做)
程序设计中临时变量的使用(20175213 吕正宏)
20175213 2018-2019-2 《Java程序设计》第8周学习总结
20175213《Java程序设计》实验二Java面向对象程序设计实验报告
20175213 2018-2019-2 《Java程序设计》第7周学习总结
20175224 2018-2019-2 《Java程序设计》第八周学习总结
2018-2019-2 20175224 实验二《Java面向对象程序设计》实验报告
20175224 2018-2019-2 《Java程序设计》第七周学习总结
20175224 2018-2019-2 《Java程序设计》第六周学习总结
热门文章
2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告
20175224 2018-2019-2 《Java程序设计》第五周学习总结
20175224 2018-2019-2 《Java程序设计》第四周学习总结
20175224 2018-2019-2 《Java程序设计》第三周学习总结
20175224 2018-2019-2 《Java程序设计》第二周学习总结
2017-2018-2 20165301 实验五《网络编程与安全》实验报告
2017-2018-2 20165301 实验四《Java面向对象程序设计》实验报告
20165301第十周课下补做
20165301 2017-2018-2 《Java程序设计》第九周学习总结
20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
Copyright © 2011-2022 走看看