Task 4 求数组的连续子数组的最大和(团队合作)
小组成员:李敏、刘子晗
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 求数组的连续子数组的最大和(团队合作)的更多相关文章
- Dp解决数组中连续子数组的最大和
#include<iostream> ]; ;i<size;i++) { TempSum = CurSum; ) ...
- 剑指Offer面试题:28.连续子数组的最大和
一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...
- 剑指offer面试题31连续子数组的最大和
一.题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果 ...
- 《剑指offer》第四十二题(连续子数组的最大和)
// 面试题42:连续子数组的最大和 // 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整 // 数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). #in ...
- 剑指 offer 面试题31 连续子数组的最大和(动态规划)
求连续子数组的最大和 题目描述 给定一个整形数组,有正数也有负数,数组中连续一个或多个组成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n); 测试用例 给定数组 {1,-2,3,10,- ...
- 连续子数组的最大乘积及连续子数组的最大和(Java)
1. 子数组的最大和 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如数组:arr[]={1, 2, 3, -2, ...
- 【剑指offer】面试题 42. 连续子数组的最大和
面试题 42. 连续子数组的最大和 NowCoder 题目描述 输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值. 示例: 输入: [-2,1 ...
- leetcode面试题42. 连续子数组的最大和
总结一道leetcode上的高频题,反反复复遇到了好多次,特别适合作为一道动态规划入门题,本文将详细的从读题开始,介绍解题思路. 题目描述示例动态规划分析代码结果 题目 面试题42. 连续子数 ...
- 《剑指Offer》- 连续子数组的最大和或最小和
前言 本文是<剑指Offer>系列(JavaScript版)的第一篇,题目是"连续子数组的最大和或最小和". 话不多说,开始"打怪"修炼... 一. ...
随机推荐
- JavaScript-闭包函数(理解)
JavaScript-闭包函数(理解) var foo = function (a) { return function inner () { console.log(a) } } var faa = ...
- 基于Babylon.js编写简单的骨骼动画生成器
使用骨骼动画技术可以将网格的顶点分配给若干骨头,通过给骨头设定关键帧和父子关系,可以赋予网格高度动态并具有传递性的变形 效果.这里结合之前的相关研究在网页端使用JavaScript实现了一个简单的骨骼 ...
- canvas绘制折线图(仿echarts)
遇到的问题:Retina屏上字体线条模糊问题 解决方案:放大canvas的大小,然后用css压缩回原大小,例如:想要900*400的画布,先将画布设置为 width="1800px" ...
- 在hue平台上使用oozie工作流调度
在实习期间,公司使用的hue平台做的数仓,下面就简单介绍一下hue的一些使用的注意事项,主要是工作流的使用和调度 进入hue首页: Workflow是工作流,Schedule是调度工作流的,如设置工作 ...
- 泰坦尼克(Titanic)生存因素可视化
数据来源: kaggle 分析工具:Python 3.6 & jupyter notebook 附上数据:链接: https://pan.baidu.com/s/1D7JNvHmqTIw0Oo ...
- 【翻译】R 中的设计模式
目录 R 中的设计模式 不动点算法 包装器模式 接口模式 柯里化(Currying) 闭包(Closures) 缓存模式 计数器模式 R 中的设计模式 本文翻译自 Design Patterns in ...
- Playing audio from Node.js using Edge.js
http://tomasz.janczuk.org/2014/06/playing-audio-from-nodejs-using-edgejs.html
- mfc 类
知识点 类的概念 类的相关术语 定义类 使用类 一.类的概念 简单的说类就是数据与函数综合体,它是用户自定义类型. 二.类的相关术语 类的实例称为对象. 类在定义中隐式地包含数据和操作函数,这种思想称 ...
- div滤镜结合ajax,实现登录
一:登陆页面 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...
- C++默认成员函数
1.什么是面向对象? 概念:(Object Oriented Programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法. 对象指的是类的实例,将对象作为程序的基本单元,将程 ...