小组成员:李敏、刘子晗

1.设计思想:由于已经做过这个题目,只要对之前的程序加上相应的测试和约束即可。我们两个人一起商议后,决定了程序的主框架和并列出了最终可以实现的功能。先要定义数组长度和上下限的变量,然后通过if语句对用户所给出的长度和数值进行判断看是否合法,如果不合法要重新输入。最后再加上之前求和的相应代码即可。

2.出现的问题:我们达成协议后,李敏负责编程,我负责测试。开始写程序,在写判断数值是否满足int整型范围的时候出现了错误,我在测试的时候发现她把小于号错写成了大于号,然后加以改正。还出现了几个细节的符号错误。最后我对她写的程序的代码规范提出了一些建议,比方说变量名称规范,括号单独占一行以及要有空格等。都加以改正后就完成了全部工作。

3.源代码:

//求数组中连续子数组的最大和(测试后)
//刘子晗 2015/3/29
#include <iostream>
#include <time.h>
using namespace std; void main()
{
int arr[];
int length,MAX,MIN;
char ifContinue = 'Y';
srand((unsigned)time(NULL)); while (ifContinue == 'Y')
{
cout << "请输入数组长度length:" ;
cin >> length;
cout << "请输入此数组的最小值MIN和最大值MAX:";
cin >> MIN >> MAX; //检测数组范围的上下限数值是否合法
if( MIN > MAX||MIN <= - || MAX >= )
{
cout << "输入的数字不合法,请重新输入:" << endl;
cin >> MIN >> MAX;
} //检测数组长度的合法性
if (length == )
{
cout << "数组长度不能为零,请重新输入:";
cin >> length;
}
else if(length >= || length > MAX - MIN)//保证数组中没有重复的数
{
cout << "数组长度过长,请输入1000以内的数组长度:";
cin >> length;
}
//检测数组长度的合法性 cout << "生成的数组为:"<< endl;
for (int i = ;i < length; i++)
{
arr[i] = rand()%( MAX - MIN + ) + MIN;//生成一个随机数组
cout << arr[i] << " ";
}
cout << endl; //依次按数组的顺序求出当前子数组的最大和
int tran = arr[];
int sum = tran;
for (int j = ; j < length; j++)
{
tran = max(arr[j],tran + arr[j]);
sum = max(sum, tran);
}
//考虑到数组的连续(即数组可形象化为一个圈),故分别从数组首端和末端同时进行以求出两端还未相遇前的各自的最大子数组之和
int i,j,sum1 = arr[];
for (i = ; i < length && sum1 + arr[i] > sum1; i++)
{
sum1 += arr[i];
}
tran = arr[length];
for (j = length - ; j >= && tran + arr[j] > tran; j--)
{
tran += arr[j];
}
//依次比较两端数组还未相遇前的两个最大子数组之和的和与之前按数组顺序求出的最大子数组之和
if ( i < j && sum1 + tran > sum)
{
sum = sum1 + tran; //取两种情况下的最大字数组之和即可
} cout << "该数组的连续子数组之和的最大值为:" << sum << endl; cout << "是否继续测试?请输入:(Y/N)" << endl;
cin >> ifContinue ;
} }

4.测试截图:

5.总结:(1)通过两个人结对合作,我体会到了“1+1>2”,因为两个人肯定有至少两种想法,通过比较良好的合作可以分工从而提高工作效率;在遇到问题时,可以共同查找资料快速找到解决办法;当然我们也有好几次意见出现不统一的情况,这时就需要及时沟通,如果有对错之分,就可以及时改正,否则就加以改善。以后的学习和工作中想必会有很多的合作,处理好和队友之间的关系,明确分工及时交流的确可以是自己的水平提高地更快,还可以开阔自己的思维。

(2)这个程序我把重点放到了测试和代码规范上,由于平时习惯了写C++,我自己的不足之处主要有:不太爱写注释,变量和参数名有时不按规范,希望自己以后多加注意。

另外老师一直强调Java的重要,所以在网上找了关于Java的代码规范,方便以后对照

相关链接:http://www.infoq.com/news/2014/02/google-java-coding-standards

附图:

Task 4 求数组的连续子数组的最大和(团队合作)的更多相关文章

  1. Dp解决数组中连续子数组的最大和

    #include<iostream> ];     ;i<size;i++)     {           TempSum = CurSum;           )        ...

  2. 剑指Offer面试题:28.连续子数组的最大和

    一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...

  3. 剑指offer面试题31连续子数组的最大和

    一.题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果 ...

  4. 《剑指offer》第四十二题(连续子数组的最大和)

    // 面试题42:连续子数组的最大和 // 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整 // 数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). #in ...

  5. 剑指 offer 面试题31 连续子数组的最大和(动态规划)

    求连续子数组的最大和 题目描述 给定一个整形数组,有正数也有负数,数组中连续一个或多个组成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n); 测试用例 给定数组 {1,-2,3,10,- ...

  6. 连续子数组的最大乘积及连续子数组的最大和(Java)

    1. 子数组的最大和 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如数组:arr[]={1, 2, 3, -2, ...

  7. 【剑指offer】面试题 42. 连续子数组的最大和

    面试题 42. 连续子数组的最大和 NowCoder 题目描述 输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值. 示例: 输入: [-2,1 ...

  8. leetcode面试题42. 连续子数组的最大和

      总结一道leetcode上的高频题,反反复复遇到了好多次,特别适合作为一道动态规划入门题,本文将详细的从读题开始,介绍解题思路. 题目描述示例动态规划分析代码结果 题目   面试题42. 连续子数 ...

  9. 《剑指Offer》- 连续子数组的最大和或最小和

    前言 本文是<剑指Offer>系列(JavaScript版)的第一篇,题目是"连续子数组的最大和或最小和". 话不多说,开始"打怪"修炼... 一. ...

随机推荐

  1. 【vue】本地开发mock数据支持

    项目离不开数据渲染的支持,为本地开发配置 数据  支持. (一)方式一:安装JSON Server搭建mock数据的服务器 json Server 是一个创建 伪RESTful服务器的工具. 配置流程 ...

  2. MySQL的安装步骤

    MySQL5.6.43下载地址:链接: https://pan.baidu.com/s/1v0HZU_OnDClNxd5QIKDRMg 提取码: jy9s 1.解压mysql-5.6.43-winx6 ...

  3. [外观] Firemonkey Windows Hint 气球样式

    Firemonkey 在 Windows 平台下的 Hint 默认为距形,有些单调,现在只要加入一行代码,就可以有气球箭头样式的 Hint. 修改代码: 请将 FMX.Controls.Win.pas ...

  4. redis缓存数据库入门教程

    入门redis教程 前言: 应公司需求,最近学习了一下redis数据库的一些简单入门的教程,整理出来分享给大家,喜欢的可以关注和点赞哦~ 如文章中有不足之处求指正,谢谢 目录 ·什么是redis?为什 ...

  5. import require

    https://www.zhihu.com/question/56820346/answer/150743994

  6. JavaWeb总结(十)

    Filter配置详解 web项目目录示意图 <!-- Filter配置 --> <filter> <display-name>Filter_one</disp ...

  7. K近邻算法小结

    什么是K近邻? K近邻一种非参数学习的算法,可以用在分类问题上,也可以用在回归问题上. 什么是非参数学习? 一般而言,机器学习算法都有相应的参数要学习,比如线性回归模型中的权重参数和偏置参数,SVM的 ...

  8. 【HNOI2013】数列

    题面 题解 设\(\{a_n\}\)为差分数组,可以得到柿子: \[ \begin{aligned} ans &= \sum_{a_1 = 1} ^ m \sum_{a_2 = 1} ^ m ...

  9. LUOGU3278 [SCOI2013]多项式的运算

    一次AC.吼啊. BZOJ权限QAQ 区间加和乘打标记,区间乘x就是区间移动,平衡树解决即可. 查询直接遍历一遍然后算出来 // It is made by XZZ #include<cstdi ...

  10. 网络编程的演进——从Apache到Nginx

    Apache 1.Apache HTTP服务器是 Robert McCool 在1995年写成,并在1999年开始在Apache软件基金会的 框架下进行开发. 由于Apache HTTP服务器是基金会 ...