小组成员:李敏、刘子晗

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. 内部元素一一相应的集合的算法优化,从list到hashmap

    说是算法优化,基本上是在吹牛,仅仅只是算是记录下,我写代码时候的思路.毕竟还是小菜鸟. 我要开一个party,与会者都是情侣,可是情侣并非一起过来的,而是有先有后,可是每位与会者来的时候都拿着一束鲜花 ...

  2. 4.Operators-操作符(Dart中文文档)

    Dart有如下操作符: Description Operator unary postfix expr++ expr-- () [] . ?. unary prefix -expr !expr ~ex ...

  3. sqlplus 格式化一例

    对字符型,用axx格式,对数字型,用9999 格式(999表示占用3列) SQL> col 'ts#' format 999SQL> col 'file#' format 999SQL&g ...

  4. CUDA基础介绍

    一.GPU简介 1985年8月20日ATi公司成立,同年10月ATi使用ASIC技术开发出了第一款图形芯片和图形卡,1992年4月ATi发布了Mach32图形卡集成了图形加速功能,1998年4月ATi ...

  5. 前端- html -总结

    html概述 head标签 title 显示网站的标题 meta 提供有关页面的原信息 link 链接css资源文件.网站图标 style 定义内部样式表 script 链接脚本js文件 body标签 ...

  6. Codeforces 912 D. Fishes (贪心、bfs)

    题目链接:Fishes 题意: 有一个n×m的鱼塘,有一张r×r的渔网,现在往池塘里面放k条鱼(每个格子只能放一条鱼), 现在撒网的地方是随机的(必须在池塘内),问能捕的鱼的期望值最大是多少? 题解: ...

  7. Nginx应用场景

    1. Nginx应用场景 1)http服务器.Nginx可以独立的提供http服务,可以做网页静态服务器(也就是将静态文件放到nginx目录下,通过nginx来访问就ok)   2)虚拟主机,可以在一 ...

  8. 使用Fiddler进行Web接口测试

    一.Fiddler简介1.为什么是Fiddler?抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: A)Fir ...

  9. Linux下出现permission denied的解决办法

    Linux下经常出现permission denied,原因是由于权限不足,有很多文章通过chmod命令更改权限为777,但是很不方便也不适合新手,简单粗暴的方法如下: 命令行中输入 sudo pas ...

  10. python装饰器(披着羊皮的狼)

    python装饰器的作用是在不改变原有函数的基础上,对函数的功能进行增加或者修改. 装饰器语法是python语言更加优美且避免很多繁琐的事情,flask中配置路由的方式便是装饰器. 首先python中 ...