《团队开发一(求一个数组的连续的子数组之和的最大值)》

(1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的数,依此进行到数组终端;但是考虑到求的是连续的子数组,则应该想到除了在按顺序上的连续外,还得考虑到末端与首端的连续,所以按数组顺序依次求解得到的未必就是连续的最大的子数组之和,故此必须在此种情况下也求解出最大子数组之和,方法即是同时从数组的两端依次进行求出各自的最大子数组之和,然后在相遇前求和后与之前所求的最大子数组之和依次相比较,取它们中最大的一个作为连续的最大子数组之和即可。(因为单独从一端所求出的最大子数组之和绝对大于两边同时进行的其中一边所求出的最大字数之和,故保证了程序的非冗余性。)

(2)出现的问题:

a:用户输入的数组长度与计算机的内存空间分配有冲突:例如不允许数组长度为0,复数,大于与计算机协调的内存空间或大于数组范围为空间;

b:用户输入的上下限不符合逻辑要求,例如下限大于上限,下限或上限超过整型数的范围;

(3)可能解决的方案:对于以上两种情况,只需要在用户与系统界面相交互的时候,设置相应的测试函数,用户再跟据系统的提示一步步进行即可;

(4)源代码:

//求一个数组的连续的最大子数组之和
//李敏,Mar 22th
#include <iostream>
#include <time.h>
using namespace std;
int main()
{ int n, i, j, k,a[1500],b,c; char mm;do{cout<<"请输入数组长度:"<<endl;cin >> n; //检测输入数组长度的合法性
    cout<<"请分别输入两个数作为数组范围的限制,其中第一个数为下限,第一个数为上限:"<<endl;cin>>b>>c;if(n==0||n<0||n>1500||n>c-b){cout<<"输入的数组长度不合法,请重新输入!"<<endl;cin>>n;}//检测输入数组范围的合法性if(b>c||(b<-2147483648||b==-2147483648)||c==2147483647){cout<<"输入的数字不合法,请重新输入:"<<endl;cin>>b>>c;}srand( (unsigned)time( NULL ) ); //srand()函数产生一个以当前时间开始的随机种子for (i=0; i<n; i++) {a[i]=b+rand()%(c-b+1);}cout<<"系统产生的随机数为:"<<endl;for (i=0; i<n; i++) {cout<<a[i]<<'\t';}//依次按数组的顺序求出当前子数组的最大和int t = a[0]; int sum = t; for (k=1; k<n; k++) { t = max(a[k],t+a[k]);sum = max(sum, t); } //考虑到数组的连续(即数组可形象化为一个圈),故分别从数组首端和末端同时进行以求出两端还未相遇前的各自的最大子数组之和int s = a[0]; for (i=1; i<n && s+a[i]>s; i++) s += a[i]; t = a[n]; for (j=n-1; j>=1 && t+a[j]>t; j--) t += a[j]; //依次比较两端数组还未相遇前的两个最大子数组之和的和与之前按数组顺序求出的最大子数组之和if (i<j && s+t> sum) sum = s+t; //取两种情况下的最大字数组之和即可cout<<"最大字数组之和为:"<<sum<<endl;cout<<endl;cout<<"*************************************************************"<<endl;cout<<"           继续请输入Y         退出请输入N                   "<<endl;cout<<"*************************************************************"<<endl;cin>>mm;
}while(mm=='y'||mm=='Y');} 

(4)实验截图:

(6)总结:团队开发其实是一个很好的开发模式,我们可以结对从互相彼此那汲取到有利自己的东西, 以及增强了自己的合作意识,对于一个难以解决的问题,一个人总是孤立无援的,但是如果融合了两个人的解决措施,即使再难的问题也能够分而治之,从而解之,故我们应该积极的投入到项目开发团队中。

合作团队:李敏   刘子晗

转载于:https://www.cnblogs.com/Twinklelittlestar/p/4374974.html

《团队开发一(求一个数组的连续的子数组之和的最大值)》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 使用 QT 时遇到的问题及解决办法
  2. LeetCode 1641. 统计字典序元音字符串的数目(DP)
  3. Linux环境下的JFreeChart中文乱码问题解决办法
  4. 【译】你不知道的 Chrome 调试工具技巧 第二十天:Workspace的黑魔法
  5. Checkstyle的配置集
  6. Java隔离容器之sofa-ark使用说明及源码解析
  7. c# define 类似_c#跟c++的相似之处
  8. 怎样给计算机做屏幕保护,电脑屏保软件如何制作屏保 及如何设置屏幕保护
  9. 10的n次方换算关系 10^N 计算机存储单位的换算关系
  10. php循环语句时间戳转换,php怎么实现时间戳转换为时间
  11. gitee仓库迁移至gitlab仓库简单方法,保留提交记录
  12. 西瓜书——支持向量机
  13. github 访问慢,一键加速,完美访问
  14. 判断JS数据类型的四种方法
  15. 强化学习:Actor-Critic、SPG、DDPG、MADDPG
  16. vivado设计之解读复杂性报告(Complexity Characteristics)
  17. double型数据与float型数据在内存中的存储
  18. JAVA_SE 测试
  19. P2504 [HAOI2006]聪明的猴子 题解
  20. GBase 8s 常用管理员命令汇总-gstat(下)

热门文章

  1. js --- for in 和 for of
  2. 【docker】常用命令
  3. 《JAVA与模式》之适配器模式
  4. PHP使用CURL案例
  5. 在URL地址栏中显示ico
  6. [Android Studio 权威教程]Windows下安装Android Studio
  7. 内置付费 inapp purchase and Error Domain=SKErrorDomain Code=0 “Cannot connect to iTunes Store”错误...
  8. CentOS忘记密码
  9. golang 小知识-持续更新中
  10. 替换字符串空格 - Java - StringBuffer