当前位置:  编程技术>c/c++/嵌入式

如何求连续几个数之和的最大值

    来源: 互联网  发布时间:2014-10-16

    本文导语:  给定一组数,有正有负,求连续的几个数之和的最大值?并求出是从第几个数开始,第几个数结束?如果有多个序列可组成相同的最大值,则选取最开始的一个序列。(注:这两天看《编程之美》,发现2.14节,求数组的子数...

给定一组数,有正有负,求连续的几个数之和的最大值?并求出是从第几个数开始,第几个数结束?如果有多个序列可组成相同的最大值,则选取最开始的一个序列。(注:这两天看《编程之美》,发现2.14节,求数组的子数组之和的最大值,跟这个题十分相似,但是没有要求求出开始喝结束的位置,只要求求出最大值,解题思路跟下面的代码相似,但只用了两个变量,没有用数组,做到时间复杂度O(n),空间复杂度O(1))
用程序设计实现。我实现了一种方法,跟大家分享一下,如果朋友你有更好的方法来解决这个问题,希望你能回复,与大家分享一下。
另外,如果题目改成:“给定一组数,有正有负,求连续的几个数之和的最大值?并求出是从第几个数开始,第几个数结束?如果有多个序列可组成相同的最大值,则选取序列中数字最少的那个。”该怎么写程序,本人思考良久没有想到好的办法。求指点!!!!!!!
下面是我实现的C++代码:
代码如下:

#include "stdafx.h"
#include
using namespace std;
int GetMaxs(int arrary[],const int n)
{
 int max = 0, temp = 0;  //max最大值,temp临时变量
 int begin = 0, end = 0;
 int *maxlist= new int[n]; //maxlist[n],一个数组,跟原数组一般大
 max = maxlist[0] = arrary[0];
 begin = end = arrary[0];
 for (int i = 1; i < n; i++)
 {
  temp = maxlist[i - 1] + arrary[i];
  if (temp > arrary[i])
  {
   maxlist[i] = maxlist[i - 1] + arrary[i]; //更新最大值数组
  }
  else
  {
   maxlist[i] = arrary[i]; //更新最大值数组
  }
  if (maxlist[i] > max)
  {
   max = maxlist[i]; //用当前值更新最大值
   end = i; //设置终点索引
  }
 }
 //下面几句是寻找起始点
 int j = end, sum = 0;
 while (j < n && sum != max )
 {
  sum += arrary[j];
  j --;
 }
 begin = ++j;
 cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 二叉树常用算法(求总节点个数和叶子节点个数)
  • linux 子目录个数的限制及文件个数的限制
  • C++ Bitsets 成员 count():返回被设置的位的个数
  • socket程序中read字节个数与write字节个数不同
  • C++ Queues(队列) 成员 size():返回队列中元素的个数
  • 简单问题:如何查看一个目录下的文件个数
  • C++ Maps 成员 size():返回map中元素的个数
  • 怎样可以增加cookie的个数?
  • C++ MultiMaps 成员 max_size():返回可以容纳的最大元素个数
  • UNIX/LINUX中grep查找文件个数有无限制
  • C++ Maps 成员 max_size():返回可以容纳的最大元素个数
  • vi怎么统计查找字符串的个数?
  • C++ MultiMaps 成员 size():返回multimap中元素的个数
  • 急请教高手,shell命令计算字符串个数
  • C++ Priority Queues(优先队列) 成员 size():返回优先队列中拥有的元素的个数
  • 帮帮小妹!如何用命令显示当前进程个数!
  • C++ Double Ended Queues(双向队列) 成员 size():返回双向队列中元素的个数
  • 如何获得指定进程名执行个数
  • C++ Bitsets 成员 size():返回可以容纳的位的个数
  • php计算数组不为空元素个数
  • C++ Lists(链表) 成员 size():返回list中的元素个数
  • 判断一个数是不是素数的方法




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3