一、题目及题目要求

题目:返回一个整数数组中最大子数组的和。
要求:
(1)输入一个整形数组,数组里有正数也有负数。
(2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
(3)如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。
(4)同时返回最大子数组的位置。

二、设计思路

这次的编程开发是基于上次的返回一个整数数组中最大子数组的和( http://www.cnblogs.com/a1397240667/p/5322471.html),我和我的搭档开始了认真的讨论,再结合课堂上的同学讨论,如何能在一维数组原有的基础上,加上首尾相连这个条件,最后得到的方法大概思想是:遍历数组里面的每一个数将第一个数变为最后一个数,这样又变成了一个新的一维数组,输出每个数组的最大子数组和,然后比较每个输出的和,找出最大的数。

三、代码

 1 /*2016.3.24 weilihua fengyutong*/
 2 #include <iostream>
 3 #include<ctime>
 4 #define Num 10000
 5 using namespace std;
 6 int DTGH_Sum(int a[],int n) //动态规划法求子段和函数
 7 {
 8     int sum = 0;
 9     int *b = (int *) malloc(n * sizeof(int));    //动态为数组分配空间
10     b[0] = a[0];
11     for(int i = 1; i < n; i++)
12     {
13         if(b[i-1] > 0)
14             b[i] = b[i - 1] + a[i];
15         else
16             b[i] = a[i];
17     }
18     for(int j = 0; j < n; j++)
19     {
20         if(b[j] > sum)
21             sum = b[j];
22     }
23     delete []b;        //释放内存
24     return sum;
25 }
26 int main()
27 {   int temp,b;
28     int sum=0;
29     int i;
30     int a1,a2;
31     int a[Num];
32     int length=0;
33     while (length==NULL||length == 0)//如果数组长度为空或零则请重新输入
34      {
35       cout<<"请输入数组长度:";
36       cin>>length;
37      }
38     cout<<"生成随机序列: "<<endl;
39     srand((unsigned)time(NULL));
40     for(i=0;i<length;i++)//产生随机序列
41     {
42         if(rand()%2==0)
43         {
44             a[i]=rand()%100;
45         }
46         else
47         {
48             a[i]=(-1)*rand()%100;
49         }
50             cout<<a[i]<<" ";
51     }
52     cout<<endl;
53     cout<<"此首尾相连的数组中最大子数组的和有以下几种可能:"<<endl;
54     cout<<"第1种排列方式:"<<endl;
55     for( i=0;i<length;i++)
56     {
57         cout<<a[i]<<"  ";
58     }
59     cout<<"最大子数组和为:"<<DTGH_Sum(a,length)<<endl;
60     a1=DTGH_Sum(a,length);
61     for(b=1;b<length;b++)
62     {
63         temp=a[0];
64     for(i=1;i<=length;i++)
65      {
66         a[i-1]=a[i]; //将第一个数变为最后一个数
67
68      }
69        a[length-1]=temp;
70        cout<<"第"<<b+1<<"种排列方式:"<<endl;
71        for( i=0;i<length;i++)
72        {
73            cout<<a[i]<<"  ";
74        }
75        cout<<"最大子数组和为:"<<DTGH_Sum(a,length)<<endl;
76        if(DTGH_Sum(a,length)>=sum)
77        {
78            sum=DTGH_Sum(a,length);
79        }
80     }
81       a2=sum;
82       cout<<endl;
83       if(a1>=a2)
84       {
85           cout<<"综上,最大的子数组和为:"<<a1<<endl;
86       }
87       else
88       {
89           cout<<"综上,最大的子数组和为:"<<a2<<endl;
90       }
91     return 0;
92 } 

四、运行截图

当数组长度为1000时:

五、项目计划日志

日期&&任务

听课 编写程序 阅读相关书籍 网上查找资料   日总计
周一 100   30 30 160
周二   120 30 30 180
周三   30 30 10 70
周四 100 20  30   150
周五   120   30 30 180
周六   45 30 10 85
周日    200  30 10   240
周总计 200 535 180 110

1065

时间记录日志

3/21

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3/21 14:00 15:50 10 100 听课 软件工程上课
  21:04 21:  34 0 30 阅读书籍 《构建之法》
  22:10 22: 40 30 网上查找资料  
 3/22  18:00  18:30  0  30  阅读书籍 《构建之法》 
  19:00 21:30 20 120 编写程序 结对开发- 子数组之和
  22:  15 22:  45 30 网上查找资料  
3/23 19:  25 20: 00 5 30 编写程序 结对开发- 子数组之和
  22:00 22: 30 0 30 阅读书籍 《构建之法》
  22:40 22: 50 0 10 查找资料  
3/24 14:00 15:  50 10 100 上课 软件工程上课
  18:26 18: 50 20 编写程序 结对开发- 子数组之和
   22:00  22:30  0  30  阅读书籍  《构建之法》
3/25 14:  00 16:  20 20 120  编写程序 结对开发- 子数组之和
  11:23 12: 00 7 30 网上查找资料  
   21:00  21:30  0  30  阅读书籍  《构建之法》
3/26 7: 00   7: 30 0 30 阅读书籍 阅读《构建之法》
  10: 00 11: 00 15 45 编写程序 结对开发- 子数组之和
  9:  45   9: 55  0 10 网上查找资料  
3/27 8:20 12:00 20 200 编写程序 结对开发- 子数组之和
  21:00 21:10 0 10 网上查找资料  
  21:30 22:00 0 30 阅读书籍 《构建之法》

缺陷记录日志

日期 编号 类型 引入阶段 排除阶段 修复时间 备注
3/24 1 20 编码 编译 4 实参与形参类型对应问题
3/24 2 20 编码 编译 1 申请了动态空间未释放
3/25 20  编码  编译  7 当数组长度为0时,无法正常跳出
3/27 4 20 编码 编译 20 逻辑有问题,会突然中止
3/27 5 20 编码 编译 1 变量未初始化

同组伙伴博客:http://www.cnblogs.com/qizhonh/

工作照:

转载于:https://www.cnblogs.com/a1397240667/p/5323248.html

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

  1. 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)

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

  2. 结对开发——返回一个整数数组中最大子数组的和

    一.题目要求 1.输入一个整型数组,数组里有正数也有负数. 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 ...

  3. 软工 课堂作业:选出一个整数组中最大子数组

    项目计划日志       10.6 看ppt,熟悉内容.       10.6下午,开始编程调试.       10.7 运行调试,写博客.                   时间记录日志 日期 开 ...

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

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

  5. 返回一个整数数组中最大子数组的和---环形数组

    一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j- ...

  6. 返回一个首尾相接的二维整数数组中最大子数组的和

    题目: ·返回一个二维整数数组中最大子数组的和. 要求: ·输入一个二维整形数组,数组里有正数也有负数. ·二维数组首尾相接,象个一条首尾相接带子一样. ·数组中连续的一个或多个整数组成一个子数组,每 ...

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

    一.要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果数组A[0]--A[j-1]首尾相邻,允许A[i-1],. ...

  8. 课堂练习:返回一个二维数组中最大子数组的和

    1.题目: 返回一个二维数组中最大子数组的和. 2.要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子 ...

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

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

最新文章

  1. 按键处理技巧(状态机)
  2. python计算器gui设计_python GUI模拟实现计算器
  3. json 潜逃 结构体_JSON还原为结构体 - osc_t5zhwnvx的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 李洋疯狂C语言之用递归解决李白喝酒问题(二)
  5. [转]自然语言处理中的Attention Model:是什么及为什么
  6. linux 该用户组id,linux用户和用户组的一些基本知识
  7. Ubuntu10.04设备未托管
  8. 频谱仪使用方法图解_安全继电器工作原理、接线图、使用方法图解
  9. java 命令行运行 打包 IDEA
  10. HTB相关TC命令以及内核实现介绍
  11. 服务器维修工单模板,XX运维服务方案模板.doc
  12. linux bluefish制作网页,基于Linux文本模式的网页编辑器Bluefish
  13. 买二手房和买新房-----这几年的是没差别的
  14. 定时报警器课程设计(基于单片机)
  15. 数组、数组的定义、对数组的理解
  16. javaweb-jsp编程例题
  17. C#:实现康托尔集cantor set算法 (附完整源码)
  18. 卸载wrapt_conda 安装与卸载cudnn
  19. IO流如何选择字节流和字符流??
  20. win10重置计算机卡10%,win10千万不要重置_win10重置此电脑有什么后果

热门文章

  1. JS node 后端签名前端文件直传ali-oss解决方案
  2. javascript学习系列(20):数组中的bind,apply,call
  3. 前端学习(3150):react-hello-react之DoM的diff算法
  4. 前端学习(3035):vue+element今日头条管理-关于问题的一个解析
  5. 前端学习(2938):vue对象之间的实例属性ref
  6. [html] 说说你对html的嵌套规范的理解,都有哪些规范呢?
  7. [html] 请实现一个网站加载进度条
  8. PS教程第十七课:放大看 缩小看
  9. [html] H5播放的video视频,如何实现对视频截图?
  10. [css] 为什么要使用css sprites?