求循环数组的最大子数组的和

一、程序要求

1、输入一个整数数组,数组中有正数也有负数;

2、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;

3、如果数组A[0].......A[j-1]首尾相邻,允许A[i-1],......A[n-1],A[0].......A[j-1]之和最大;

4、同时返回最大子数组的位置。

二、程序设计思想

此次要求的是求数组中间的某一段和最大,关键是求数组首尾相接的某一段元素的和最大,中间部分的和小于0,所以求出数组总和,然后减去这部分元素的和。求这部分的和的时候,将数组求反,用上次的方法求出就行,再加上数组的总和,即为所求。

三、源程序

//李俏、张莹荧,2016.3.26
//求整数数组的最大子数组的和,数组可循环 

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;typedef long long LL;LL maxsum(int a[], int n)
{int i;int start=0,end=0;LL maxsum = 0;LL sum = 0;for(i=0; i<n; i++){if(sum < 0) {sum = a[i];//start= i + 1;
        }else {sum += a[i]; }if(sum>maxsum){maxsum = sum;                //end = i;
        }//maxsum = max(maxsum, sum);
    }//cout<<"起始位置:"<<start<<",终止位置:"<<end;return maxsum;
}int main()
{int i;int arrlength;int arr[1000];LL sum = 0,sum1,sum2;cout<<"请输入数组长度:";cin>>arrlength;if(arr==NULL||arrlength==0){//exit(1);return 0;}cout<<"请输入数组元素:";for(i=0;i<arrlength;i++){cin>>arr[i];sum += arr[i];}sum1 = maxsum(arr, arrlength);for(int i=0; i<arrlength; i++)//每个数求反
    {arr[i] = -arr[i];}   sum2 = maxsum(arr, arrlength);//求出原数组中和小于0的元素的和
sum = max(sum + sum2, sum1);//sum+sum2数组两头的元素的和
    cout<<"最大子数组的和为:"<<sum<<endl;return 0;
}

四、结果截图

五、项目计划日志

周活动总结表

姓名:李俏          日期:2016年3月19日

日期   任务 听课  编写程序 阅读课本 准备考试     日总计

周日(3.20)

  30 30        60

周一

120 30 30       180

周二

  30 30       60

周三

  30 30       60

周四

120   30       150

周五

  180 30       210

周六

  60 30       120

周总结

240 360

210

      810

六、时间记录表:

学生:   李 俏                         日期 :2016年3月12日

教师:   王建民                        课程 :软件工程

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3.21

16:30

17:00

30

编写程序

作业

20:10

20:40

30

阅读

作业

3.22

19:10

19:50

10

30

编写程序

作业

20:00

20:30

30

阅读

作业

3.23

14:30

15:30

30min

30

编写程序

作业

20:00

20:30

30

阅读

作业

3.24

18:50

19:20

30

编写程序

作业

20:00

20:30

30

阅读

作业

3.25

13:20

18:00

100

180

编写程序

作业

21:10

21:40

30

阅读

作业

3.26

12:00

13:30

30min

60

编写程序

作业

七、缺陷记录日志:

学生        李俏,张莹荧

日期       2016年3月25日

教员          王建民

程序号    2

日期  编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
 3.26  1 函数 设计 编译 15min  
描述:求最大子数组的和的函数封装不恰当 。
 3.26  2 结果 编码 编译 15min  
描述:没有考虑好最大子数组结果与其他元素的结果的关系 。
 3.27  3 算法 编码    
描述:无法返回位置。

八、工作照片

小伙伴:张莹荧(http://www.cnblogs.com/zhyying/)

转载于:https://www.cnblogs.com/Aliqiao/p/5324443.html

结对项目——可循环的最大子数组相关推荐

  1. 结对项目——最大子数组

    求数组中最大子数组的和 一.程序要求 1.返回一个整数数组中最大子数组的和: 2.输入一个整数数组,数组中有正数也有负数: 3.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 4.求 ...

  2. 结对开发4----最大子数组(大数溢出)

    结对成员:范德一,赵永恒 一.题目: 返回一个整数数组中最大子数组的和. 二.要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数 ...

  3. 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)

    一.题目及题目要求 题目:返回一个整数数组中最大子数组的和. 要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果 ...

  4. 结对开发 随机产生数组并求最大子数组的和

    一.题目 返回一个整数数组中最大子数组的和. 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O( ...

  5. 返回一个二维整数数组中最大子数组的和(二人结对)

    题目:返回一个二维整数数组中最大子数组的和 要求:1.输入一个二维整型数组,数组里有正数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值. ...

  6. 结对开发——一维数组最大子数组判断溢出

    一 题目 求一维数组最大子数组和 要求:1000个数以上,整数 二.设计思路 最大子数组很好找到,但是子数组和的溢出问题很难解决. 经过不断的思考,我得出了结论: 溢出是程程序设计者设计时的不足所带来 ...

  7. 结对开发2(求二维数组的最大子数组和)

    一,题目要求: 输入一个二维数组,求出此二维数组的最大子数组和. 二,设计思路: 利用for循环进行遍历,求出数组中每一个子数组的和,最终求出这些子数组的最大的一个值.程序中利用了调用函数,被调函数分 ...

  8. 求二维整数数组中最大子数组的和(结对作业)

    题目:返回一个二维整数数组中最大子数组的和 要求:(1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. (3)求所有子数组的和最大 ...

  9. 结对开发--求二维数组的最大子数组

    小组成员:信1201-1班  黄亚萍 信1201-1班  袁亚姣 一.题目要求 程序要使用的数组放在一个叫 input.txt 的文件中,  文件格式是: 数组的行数, 数组的列数, 每一行的元素,  ...

最新文章

  1. 用Swift实现一款天气预报APP(三)
  2. 华为p4支持鸿蒙功能吗_吹过的牛都一步一步给实现了!明年华为手机支持升级鸿蒙系统!...
  3. 小程序 数据缓存
  4. PAT甲题题解-1128. N Queens Puzzle (20)-做了一个假的n皇后问题
  5. html 跟随鼠标移动线条,canvas跟随鼠标移动的随机线条
  6. 面试不谈钱,难道要我跟你谈恋爱?真会扯
  7. boost::filesystem 库的简单使用
  8. .NET正则基础之——平衡组
  9. Linux Shell编程笔记10 Shell数组的补充
  10. SpringBoot、mybatis、Druid结合使用存储emoji图标
  11. CentOS下ELK基于ElastAlert实现日志的微信报警
  12. springMVC的controller单例和多例下成员变量的问题
  13. 创建 Agg 静态链接库
  14. css权重机制,CSS权重及其计算
  15. 目标建立——SMART法则
  16. 黑苹果成功引导到安装界面,USB鼠标无法使用的解决办法
  17. 制作启动U盘重装系统
  18. 搜狗搜索图片查看器调用帮助
  19. 基于MATLAB二分法求解一元二次方程的根
  20. OpenPLC61850: An IEC 61850 MMS compatible open source PLC for smart grid research

热门文章

  1. 现在计算机怎样读硬盘端口,组装电脑之硬盘识别篇
  2. MySQL:Illegal mix of collations (utf8_general_ci,COERCIBLE) and (gbk_chinese_ci,IMPLICIT) for operat
  3. 【已解决】SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.SLF4J: Defaulting to no-operat
  4. Android 拼音转换工具PinyinUtils
  5. php银行卡号姓名,PHP实现根据银行卡号判断银行_PHP
  6. fullpage的使用方法及配置项 (慕课网视频总结)
  7. python爬取微博数据词云_用Python爬取微博数据生成词云图片
  8. 288. Unique Word Abbreviation
  9. 操作系统:操作系统内核是什么?
  10. android和harmonyos对比,HarmonyOS真的是安卓换壳吗?它究竟是一个怎样的系统?