博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对开发-返回一个整数数组中最大子数组的和(首尾相接版)
阅读量:7224 次
发布时间:2019-06-29

本文共 2487 字,大约阅读时间需要 8 分钟。

一、题目及题目要求

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

二、设计思路

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

三、代码

/*2016.3.24 weilihua fengyutong*/#include 
#include
#define Num 10000using namespace std; int DTGH_Sum(int a[],int n) //动态规划法求子段和函数{ int sum = 0; int *b = (int *) malloc(n * sizeof(int)); //动态为数组分配空间 b[0] = a[0]; for(int i = 1; i < n; i++) { if(b[i-1] > 0) b[i] = b[i - 1] + a[i]; else b[i] = a[i]; } for(int j = 0; j < n; j++) { if(b[j] > sum) sum = b[j]; } delete []b; //释放内存 return sum;}int main() { int temp,b; int sum=0; int i; int a1,a2; int a[Num]; int length=0; while (length==NULL||length == 0)//如果数组长度为空或零则请重新输入 { cout<<"请输入数组长度:"; cin>>length; } cout<<"生成随机序列: "<
=sum) { sum=DTGH_Sum(a,length); } } a2=sum; cout<
=a2) { cout<<"综上,最大的子数组和为:"<
<

 

四、运行截图

当数组长度为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     
周总计 200 535 210 110

1055

 

时间记录日志

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 编写程序 结对开发-首尾相接版
  15: 23 16: 00 7 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 变量未初始化

 

同组的小伙伴:

转载于:https://www.cnblogs.com/qizhonh/p/5323317.html

你可能感兴趣的文章
搞定微信告警-工具篇
查看>>
Objective-C的Block,递归与泛型
查看>>
inotify + rsync 打造文件实时同步
查看>>
如何在java swing/awt中单击右键弹出一个菜单
查看>>
SideShow Gadget开发[2]
查看>>
Model与UIControl之间的模型关系
查看>>
QoS优先级详解
查看>>
camtasia studio 8.2使用技巧集锦
查看>>
ORACLE 修改schemas的方法一
查看>>
C++构造函数调用顺序
查看>>
“域控制器安全策略”打开错误的解决方法
查看>>
为SharePoint搜索创建自定义优化参数
查看>>
linux文件
查看>>
Exchange Powershell查看用户最后登陆邮箱时间
查看>>
我所认识的ELK Stack
查看>>
聊下 git remote prune origin
查看>>
Java线程:线程的调度-守护线程
查看>>
[职业发展]中国本科生的6大软肋,彰显就业意识不强
查看>>
每个IIS中发布的网站只能绑定 一个端口
查看>>
有关于企业的安全管理
查看>>