首尾相连的一位数组最大子数组和
题目:在原有的一位数组上进行扩展,求首尾相连的最大子数组的和:
要求: 输入一个一维整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。
结对编程要求: 两人结对完成编程任务。 一人主要负责程序分析,代码编程。
一人负责代码复审和代码测试计划。
发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。
结对开发过程:
这次的编程开发是基于上次的以为数组,我和我的搭档@快乐的小菜鸟开始了认真的讨论,再结合课堂上的同学讨论,如何能在一维数组原有的基础上,加上首尾相连这个条件,同时降低时间复杂度,这种方法的大概思想是:遍历数组里面的每一个数将第一个数变为最后一个数,具体算法 a[i-1]=a[i],这样又变成了一个新的一维数组,输出每个数组的最大子数组和,然后比较每个输出的和,找出最大的数:
具体代码:
#include <iostream.h> int maxSum(int* a, int n) //定义一个求一维数组的最大子数组和的方法
{ int sum=0; int b=0; for(int i=0; i<n; i++) { if(b<0) b=a[i]; else b+=a[i]; if(sum<b) sum=b; } return sum;
} int main()
{ int n,temp,b;int sum=0;int i;int a1,a2;cout<<"请输入数组的元素个数: "<<endl;cin>>n;cout<<"请输入数组的元素: "<<endl;int *a=new int[n];for( i=0;i<n;i++){cin>>a[i];}cout<<"此首尾相连的数组中最大子数组的和有以下几种可能:"<<endl;cout<<"第1种排列方式:"<<endl;for( i=0;i<n;i++){cout<<a[i]<<" ";}cout<<"最大子数组和为:"<<maxSum(a,n)<<endl;a1=maxSum(a,n);for(b=1;b<n;b++){temp=a[0];for(i=1;i<=n;i++){ a[i-1]=a[i];}a[n-1]=temp;cout<<"第"<<b+1<<"种排列方式:"<<endl;for( i=0;i<n;i++){cout<<a[i]<<" ";}cout<<"最大子数组和为:"<<maxSum(a,n)<<endl;if(maxSum(a,n)>=sum){sum=maxSum(a,n);}} a2=sum;cout<<endl;if(a1>=a2){cout<<"综上,最大的子数组和为:"<<a1<<endl;}else{cout<<"综上,最大的子数组和为:"<<a2<<endl;}return 0;
}
截图:
实验感想:
这次感觉题目算是比较简单,想通了其中的关键算法核心,就是a[i-1]=a[i],只不过算法复杂度可能不符合老师的要求!
结对伙伴截图:
转载于:https://www.cnblogs.com/TSbj/p/4378707.html
首尾相连的一位数组最大子数组和相关推荐
- 环状二维数组最大子数组求和
题目:返回一个二维整数数组中最大子数组的和.要求:输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样. n数组中连续的一个或多个整数组成一个子数组,每个子数组都有一 ...
- 求一个二维整数数组最大子数组之和,时间复杂度为N^2
本随笔只由于时间原因,我就只写写思想了 二维数组最大子数组之和,可以 引用 一维最大子数组之和 的思想 一维最大子数组之和 的思想,在本博客上有,这里就不做多的介绍了 我们有一个最初的二维数组 ...
- 二维数组最大子数组和
一.实验题目 求一个二维数组中和最大的子数组. 二.实验思路 基于我们第一次合作时求的一位数组最大子数组,加上一层循环来遍历二维数组中的所有子矩阵的情况. 第一步:先利用上次的方法求每一行的情况,将每 ...
- 编程之美2.15 二维数组最大子数组的和(数组下标从(1,1)开始)
首先,我们看到这篇文章的题目,我们就会想到之前的那个题目 -- 连续子数组最大和问题.这个问题无疑就是把原问题扩展到二维的情况. 想起来这个问题也不是很难,我们可以求解一维矩阵 ...
- 返回一个二维整数数组最大子数组的和
要求: 1,输入一个二维整形数组,数组里有正数也有负数. 2,二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和, 3,求所有子数组的和的最大值. 设计思路: 参照一维整数数组求解最大子 ...
- 求首位相连一维数组最大子数组的和
结对成员: 朱少辉:主要负责代码编写 侯涛亮:主要负责程序测试 题目:一个首尾相接的一维整型数组,其中有正有负,求它的最大子数组并返回它的位置. 思路:在求一维子数组的基础上,先输入一个含有N个数的一 ...
- 结对开发——一维数组最大子数组判断溢出
一 题目 求一维数组最大子数组和 要求:1000个数以上,整数 二.设计思路 最大子数组很好找到,但是子数组和的溢出问题很难解决. 经过不断的思考,我得出了结论: 溢出是程程序设计者设计时的不足所带来 ...
- 求二维数组最大子数组
结对队友:胡康臻.杨寒寒 1.设计思想: 首先定义产生二维数组,定义可输入二维数组行和列,各位数随机产生: 然后进行最大子数组的求和比较,从每行的第一个数为子数组的起点开始进行不同的子数组遍历比较,只 ...
- 环形数组最大子数组之和
题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j-1]首尾相邻, ...
最新文章
- [译]15个关于Chrome的开发必备小技巧
- 南京大学与东南大学计算机学院,南京被“严重低估”的1所大学,拥有8个A+学科,无奈校名太普通...
- 在wildfly中使用SAML协议连接keycloak
- pandas清华镜像_一款可以像操作Excel一样玩Pandas的可视化神器来了!
- 三维重建:闭环检测-相机闭环
- ACM-ICPC 2019 山东省省赛 C Wandering Robot
- oracle 作业已存在,ORA-31634: 作业已存在
- 没有在该机执行windows脚本宿主的权限_解决办法
- mysql执行程序_Sql在Mysql的执行
- 用GlobalMemoryStatus获取系统内存信息
- GreenSock GSAP 3.0 最新版 所有内容创建于2020年4月4日
- SCI论文图片拼接Tips
- 通识2——“视频编码”的相关概念
- Android接入TapTap踩坑
- Android UI开发神兵利器之设计资源
- 沟通:如何用沟通解决80%的工作问题?
- 2020支付宝五福AR图
- 虚拟服务器与域名怎么解析,服务器和虚拟主机的绑定域名解析
- Python Traceback (most recent call last)【StopIteration】
- HTML+CSS十分钟实现响应式布局页面,响应式布局实战教程