返回一个二维整数数组中最大子数组的和(二人结对)
题目:返回一个二维整数数组中最大子数组的和
要求:1.输入一个二维整型数组,数组里有正数也有负数。
2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和。
3.求所有子数组的和的最大值。
设计思想: 二维数组求最大子数组可以简化成多个一维数组比较求最大 。
1.首先在用户输入行数列数以及相应二维数组后,即确定了数组列数的最大上界,从第一列开始确定最大子数组范围。
2.对于规定好的最大子数组的范围,把数组分成几组有不同的列的数组(如第一组只有一列,第二组有两列等,而行数则和原数组的行数相同)。
3.对于以上产生的几个数组,用一维数组求子数组之和最大值的方法,依次求出最大值,比较,保留最大的。
4.然后从最大上界依次减小,重复以上步骤。
源代码为:
1 #include<iostream> 2 #include<stdlib.h> 3 using namespace std; 4 5 void main () 6 { 7 int x,y,i,j,m=0; 8 cout<<"Please enter the number of rows for an array:"; 9 cin>>x; 10 cout<<"Please enter the number of columns in the array:"; 11 cin>>y; 12 int *A = new int[x*y]; 13 cout<<"Enter the array:"<<endl; 14 for(i=0;i<x;i++) 15 { 16 for(j=0;j<y;j++) 17 { 18 cin>>A[i*y+j]; //表示第i行第j列元素(注意i乘的是列数) 19 } 20 } 21 int sum[100]={0},MaxSum=A[0]; 22 //以列为基准进行循环(即先竖着加) 23 for(j=0;j<y;j++) //确定子数组的列数(用输入的y确定) 24 { 25 for(m=0;m<y;m++) //确定子数组有j(j不超过y-m)行 26 { 27 for(i=0;i<x;i++) 28 { 29 sum[i]=sum[i]+A[i*y+(m+j)]; 30 } 31 int max=0; //初始化定义一个值为零的max 32 for(i=0;i<x;i++) 33 { 34 if(max+sum[i]>sum[i]) 35 { 36 max=max+sum[i]; 37 } 38 else 39 { 40 max=sum[i]; 41 } 42 if(max>MaxSum) 43 { 44 MaxSum=max; 45 } 46 } 47 } 48 //初始化sum[i]的值,使子数组最大上界下降1,之后重新循环。 49 for(i=0;i<x;i++) 50 { 51 sum[i]=0; 52 } 53 } 54 cout<<"The sum of the largest subarray is:"<<MaxSum<<endl; 55 system("pause"); 56 }
运行截图:
总结与体会:1.最开始,为了确保求和的数组的确是矩阵,我们尝试了用一步一步的循环分别将一行矩阵,二行矩阵,三行矩阵分类相加,类内比较,再类间比较取最大的方法,但是前提是我们输入的原二维数组是3行3列的,这种情况下代码就已经很多了,而一旦数组再有任何变化就要修改整个程序,这种方法的复杂与笨拙就显示出来了。之后,我们在经过观察和总结网上的例子作参考以后,写出了以上源代码,目前为止我们都觉得这样的代码既能满足要求又比较容易理解。
2.学习了如何用new定义二维数组:
以m*n举例:
第一种方法:
int **a = new int*[m];
for(int i=0; i < m; i++)
a[i] = new int[n];
第二种方法:
int* a = new int[m*n];
a[i*n+j]是第i行第j列元素
3.双人结对编程的确可以提高效率,看来以后不仅需要提高自己的能力,更需要多多增强团队合作意识与能力。
合作美图:
( 20163953 关甜欢 20163955 王美仪 )
转载于:https://www.cnblogs.com/guantianhuan/p/9822726.html
返回一个二维整数数组中最大子数组的和(二人结对)相关推荐
- 课堂作业:返回一个二维整数组中最大子数组的和
要求: 1.输入一个二维整形数组,数组里有整数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: ...
- 返回一个首尾相接的二维整数数组中最大子数组的和
题目: ·返回一个二维整数数组中最大子数组的和. 要求: ·输入一个二维整形数组,数组里有正数也有负数. ·二维数组首尾相接,象个一条首尾相接带子一样. ·数组中连续的一个或多个整数组成一个子数组,每 ...
- 课堂练习:返回一个二维数组中最大子数组的和
1.题目: 返回一个二维数组中最大子数组的和. 2.要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子 ...
- 求二维整数数组中最大子数组的和(结对作业)
题目:返回一个二维整数数组中最大子数组的和 要求:(1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. (3)求所有子数组的和最大 ...
- 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
一.题目及题目要求 题目:返回一个整数数组中最大子数组的和. 要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果 ...
- 返回一个整数数组中最大子数组的和---环形数组
一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j- ...
- 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为 ...
- 返回一个整数数组中最大子数组的和。
一.要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果数组A[0]--A[j-1]首尾相邻,允许A[i-1],. ...
- 求二维数组中最大子数组的和
任国庆 张博 之前我们讨论了在一维数组中求最大子数组的和,在此基础上我们开始讨论二维数组的最大子数组. 求二维数组的最大子数组思想是建立在以为数组.首先将数组的第一列看成一个一维数组,找到该列的最大 ...
最新文章
- Google把AI芯片装进IoT设备,与国内造芯势力何干?
- kalilinux设置开机自启动:update-rc.d -f apache2 defaults
- Windows XP安装Python,最高支持到3.4.4,后续版本不支持
- 编程的智慧 意外在内网找到的资源
- 苹果为了提升销量真是拼:用你的iPhone做最后一件好事
- 吃透这份pdf,拿下阿里、腾讯等大厂心仪offer(软件测试岗)
- 接管客厅第一步:联想智能音箱体验评测
- OpenCV-Python实战(19)——OpenCV与深度学习的碰撞
- 检测UDP端口是否开放的命令
- win 7更改计算机用户名和密码错误,win7系统一开机就显示用户名和密码错误故障的解决方法...
- vue使用 Tinymce富文本编辑器
- Technica Engineering
- MLCC电容的直流偏压特性 贴片电容
- 技术分享 | Online DDL 工具 gh-ost
- 澳大利亚域名_澳大利亚域名.au注册要求
- 姑娘,你需要台灯吗?
- 详解Android如何实现阴影效果
- Android手把手教你实现滑动隐藏(GeastureDetector使用)
- 使用Kalibr标定相机和IMU(ZED+px4)外参
- OneAlert助力车行易提升事件响应效率,保障服务稳定性
热门文章
- 深入Python字典的内部实现
- context:component-scan扫描使用上的容易忽略的use-default-filters
- Salt-Minion配置文件详解
- mysql5.6编译
- python3生成器_Python3.7之生成器
- python假设有三个列表_python基础三(列表和元组)
- 下面属于javascript内部对象的有_JavaScript从零开始——面向对象编程(2)
- python2020未来前景_2020年Python发展前景如何呢?
- php 数据库 自增值,Mysql应用MySql数据库自动递增值问题
- Python文件读写模式