结对开发——返回整数数组最大子数组和2
2016-03-26 22:05
567 查看
返回整数数组最大子数组和2
为了实现“敏捷开发”的目的,老师让我们采取“迭代”的方法进行项目的开发,这不,对于周一的求最大子数组和又有了新的要求,如下:1、延续上次的要求,这里不再赘余…
2、如果数组A[0]……A[j-1]首尾相连,允许A[i-1],……A[n-1],A[0]……A[j-1]之和最大;
3、同时返回最大子数组的位置;
4、要求程序必须能处理1000 个元素,且每个元素是int32 类型的。
一、实验设计思路
首先实现的是数组首尾相连,先存入数组,再将原数组反向存储形成环形数组。接着求最大子数组的和,遍历数组里面的每一个数将第一个数变成为最后一个数,形成一个新的数组,计算数组中每个最大子数组的和存入另一个数组max[]中,并记录最大子数组位置,最后找max[]数组中最大值为所求。
二、实验源代码
//返回整数数组最大子数组和2 //孔宇航 赵子茵 2016/3/25 #include <iostream> using namespace std; #define N 1000 int value(int arry[], int length) { int max , max1; int maxweizhi ; for (int j = 0; j<(length + 1) / 2; j++) { int sum = 0; max1 = -9999999; //设置最低范围 int z = 0; for (int i = j; i<(length + 1) / 2 + j; i++) //环形数组找最大子数组和 { sum = sum + arry[i]; if (sum >= max1) { max1 = sum; z++; } } max[j] = max1; maxweizhi[j] = z; } int fmax = max[0]; int q = 0; for (int i = 0; i<(length + 1 / 2); i++) //在所有和的数组中找最大值 { if (max[i]>fmax) { fmax = max[i]; q = i; } } int weizhi = maxweizhi[q]; cout << "最大子数组为:" << endl; for (int num = q; num<q + weizhi; num++) //输出最大子数组的位置 { cout << arry[num] << " "; } cout << "其和为: " << fmax << endl; return 0; } void main(int argc, char* argv[]) { int arry ; int length = 1; int max , max1; //max 存每一次求和的结果,在其中找最大值,为所求 int maxweizhi ; int num = 0; int value(int arry[], int length); cout << "请输入数组:" << endl; cin >> arry[0]; while (getchar() != '\n') //输入数组 { cin >> arry[length]; length++; } for (int j = length; j<2 * length - 1; j++) //形成环形数组,首位相连 { arry[j] = arry[num]; num++; } cout << "由这几个数形成的环形数组"; value(arry, 2 * length - 1); }
实验截图如下:
三、实验心得体会
通过这几次的结对开发,让我了解到软件开发过程中无论是结对还是团队合作都会比一个人的效率提高好多。我们都不是那种所谓的“抱大腿”的人,所以在团队中我们可以互相学习别人的好的思想来充实自己,因此还是有点期待以后的团队合作。
本次实验中对于怎样实现数组的“首尾相连”我和孔同学分别想到了很多的想法,其中也有几个想法被我们写成了可执行的文件,包括:扩展二倍数组、动态规划、定义开始和结束位置等方法,但是当考虑到还要输出最大子数组的位置的时候我们只在这个思想上面加上了这个功能。虽然有很多次尝试最后都失败了,但是我们要学会享受这个乐趣不是么?!哈!
相关文章推荐
- Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
- Mysql如何删除一个用户
- PHP设计模式 原型设计模式
- Activemq构建高并发、高可用的大规模消息系统
- BZOJ-1053 反素数ant 爆搜
- oracle锁的查找方法及解锁方案
- 设计模式学习笔记--外观模式
- 打开网站时发生的请求的细节
- python调用系统命令
- Atitit.反编译apk android源码以及防止反编译apk
- android常见布局整理
- 学习音视频知识基础
- CF 633 D 离散化+二分查找+暴力(还是要多学习学习呀,挺好的题目)
- Hive UDF自定义函数编写小例子
- Atitit.反编译apk android源码以及防止反编译apk
- Atitit.反编译apk android源码以及防止反编译apk
- 高方差与高偏差学习笔记
- iPhone 和Android应用,特殊的链接:打电话,短信,email
- HDU 5651 xiaoxin juju needs help 水题一发
- Atitit。Cas机制 软件开发 编程语言 无锁机制 java c# php