博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回一个二维整数数组中最大子数组的和
阅读量:5755 次
发布时间:2019-06-18

本文共 2840 字,大约阅读时间需要 9 分钟。

 作业要求:

                  1、输入一个二维整形数组,数组里有正数有负数。

                  2、二维数组中连续的一个子矩阵组成一个子数组。

                  3、求所有子数组的和的最大值。

 设计思想:

                  1、将二维数组分解成一维数组,使用一位数组求最大子数组之和的方法。

                  2、求得相邻两行的最大子数组之和,将相邻两行同列相加,从而得到一个一维数组,再通过一维数组求得最大子数组之和。

                  3、求得最大子数组之和的值与之前每一行最大子数组之和的结果相比较,再以此同样方式求相邻三行以及多行。

                  4、最终求得二维数组最大子数组之和。

出现的问题:

                    1、在for循环中重复定义了k

                    2、第一次进行结对编程,互相之间分工不明确,对各自的已经分工的任务履行能力不足。

                    3、刚开始的时候对二维数组和一维数组的关系不清楚,对二维数组最大子数组的和的算法不能合理分解。

                    4 、编程能力薄弱,对c语言的应用能力差。

#include 
#include
using namespace std; #define M 4 #define N 4void main(){ int a[M][N],b[N],c = 0,d = 0,f=0; int maxc ,maxd,end1[M][N] = {
0},end2[M][N] = {
0}; int i_max = 0,j_max = 0; srand((unsigned int)time(0)); cout << "是否使用随机数组:1.是 2.不是"; cin>>f; if(f==1) { for (int j = 0;j < M;j++) { for (int k = 0;k < N;k++) { a[j][k] = rand()%150-50; cout << a[j][k] << " "; } cout << endl; } } else { cout<<"请输入您的4行4列二维数组"; for (int j = 0;j < M;j++) { for (int k = 0;k < N;k++) { cin>>a[j][k]; ; } cout << endl; } } cout << endl; maxc = a[0][0]; maxd = a[0][0]; for (int i = 0;i < M;i++) { for (int i_hang = 0;i_hang < M-i;i_hang++) { for (int j = 0;j < N;j++) { b[j] = 0; } for (int i_hang1 = i_hang;i_hang1 <= i_hang+i;i_hang1++) { for (int j = 0;j < N;j++) { b[j] += a[i_hang1][j]; } } c = 0; for (int k = 0;k < N;k++) { c += b[k]; if (c > maxc) { maxc = c; end1[i][i_hang] = k; i_max = i; j_max = i_hang; } if(c < 0) { c = 0; } } for ( k = N-1;k >= 0;k--) { d += b[k]; if (d > maxd) { maxd = d; end2[i][i_hang] = k; } if(d < 0) { d = 0; } } } } cout << "最大子数组为:" << endl; for (int k = 0;k <= i_max;k++) { for (int k1 = end2[i_max][j_max];k1 <= end1[i_max][j_max];k1++) { cout << a[j_max+k][k1] << " "; } cout << endl; } cout << endl; cout << "这个字数组的和为: " << maxc << endl; system("pause"); }

 运行结果:

 

总结:

        这次编程是第一次进行结对编程,编程开始前进行了任务划分,不过开始之后编写代码之外的另一个人就沦为打酱油的状态。这种类型的合作对我们两个人而言

都是一个挑战。希望下次合作能有更好的配合。 

 

转载于:https://www.cnblogs.com/MIAOLAOSHI/p/9824301.html

你可能感兴趣的文章
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>