返回一个整数数组中最大子数组的和

  {25,47,-78,-23,12,-45,47,13,85,-100,120}

  在以上这串数组中,如何划分子数组,可以使其中一个子数组的内部和达到最大?

  {25}是它的一个子数组,{25,47}也是它的一个子数组,但25+47>25,{25,47,-78}依旧是子数组,但很明显,这个数组的和依旧小于{25,47}这个数组的和。所以依次类推,我们可以将所有的子数组都列出来,然后将结果放到一个数组中最后进行比较即可。

  但我的思路是这样的:求最大子数组的和,那么我的眼中只有正数——凡是存在负数的子数组一律抛弃,那么就可以这样:如果第一个数是正数,将它赋给一个变量,然后判断第二个数,正数则与参数相加再赋给变量;负数则跳过,将变量放到数组中,然后变量重新置为0。另一种可能,第一个数是负数,那么直接跳过,判断第二个数,此时就进入了循环。

  但经过我的思考,我发现我的程序不太好,第一,程序的“弯弯绕”太多了,这样会导致一个月以后,我自己都不一定能读懂我写的是什么。

  第二,程序的范围太窄了,没错,本程序中解决的问题是返回一个整数数组中最大子数组的和,但如果别人问的是返回一个整数数组中最小子数组的和呢?再问列出所有整数数组的子数组的和呢?

  程序地址

  https://github.com/Evilleon/The-sum-of-the-largest-subarrays.git

转载于:https://www.cnblogs.com/YXSZ/p/10505538.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值