二维数组最大子数组和

一.实验题目

求一个二维数组中和最大的子数组。

二.实验思路

基于我们第一次合作时求的一位数组最大子数组,加上一层循环来遍历二维数组中的所有子矩阵的情况。

第一步:先利用上次的方法求每一行的情况,将每行结果存入一个一位数组中,构成一个二维数组A[][]。

第二步:将上述二维数组每一列利用求每一行的方法再次遍历。将每个结果与A[][]中的值比较取大值。

第三步:输出这个最大值。

三.代码

  1 // ketang5.cpp : 定义控制台应用程序的入口点。
  2 //人员:   张世通 梁世豪
  3 
  4 #include "stdafx.h"
  5 #include "iostream"
  6 #include "fstream"
  7 using namespace std;
  8 
  9 /*二维数组压缩函数*/
 10 void yasuo(int **Source,int **Destion,int row,int line)
 11 {//将每一行的数组元素都用枚举法求出子数组
 12     int i,j,add,count;
 13     for(i=0;i<row;i++)
 14     {
 15         count=0;
 16         for(j=0;j<line;j++)
 17         {
 18             add=0;
 19             for(int l=0;l<line-j;l++)                            //每一行按顺序进行枚举存入数组中
 20             {
 21                 add=add+Source[i][j+l];
 22                 Destion[i][count+l]=add;
 23             }
 24             count=count+line-j;
 25         }
 26     }
 27 }
 28 
 29 /*求最大值函数*/
 30 int Max(int **Destion,int row,int line)
 31 {
 32     int i,j,add,max;
 33     max=Destion[0][0];                                                //将数组的第一个数赋值给max
 34     for(j=0;j<line;j++)
 35     {
 36         for(i=0;i<row;i++)
 37         {
 38             add=0;
 39             for(int r=0;r<row-i;r++)
 40             {
 41                 add=add+Destion[r+i][j];                            //逐列对数组进行枚举,求最大值
 42                 if(max<add)
 43                 {
 44                     max=add;
 45                 }
 46             }
 47         }
 48     }
 49     return max;
 50 }
 51 
 52 /*数组初始化*/
 53 void chushihua(int**Arr,int row,int line)
 54 {
 55     cout<<"请输入数组数据"<<endl;
 56     for(int i=0;i<row;i++)
 57     {
 58         for(int j=0;j<line;j++)
 59         {
 60             cin>>Arr[i][j];
 61         }
 62     }
 63 }
 64 
 65 /*释放空间*/
 66 void Delete(int **Arr,int row)
 67 {
 68     for(int i=0;i<row;i++)
 69     {
 70         delete[]Arr[i];
 71     }
 72     delete[]Arr;
 73 }
 74 int main()
 75 {
 76     char s;
 77     int row,col1,col2;                                //定义行数列数
 78     cout<<"请输入行数:";
 79     cin>>row;
 80     cout<<"请输入列数:";
 81     cin>>col1;    
 82     int **A;                                        //动态定义二维数组
 83     int **B;
 84     col2=col1*(col1+1)/2;
 85     A=new int*[row];
 86     for(int k=0;k<row;k++)
 87     {
 88         A[k]=new int[col1];
 89     }
 90     B=new int*[row];
 91     for(int l=0;l<row;l++)
 92     {
 93         B[l]=new int[col2];
 94     }
 95     chushihua(A,row,col1);
 96     yasuo(A,B,row,col1);
 97     int max=Max(B,row,col2);
 98     cout<<"最大子数组之和为:"<<max<<endl;
 99     cout<<endl;
100     cout<<"是否继续(Y/N)";
101     cin>>s;
102     while(s!='Y'&&s!='y'&&s!='N'&&s!='n')
103     {
104         cout<<"输入错误,请重新输入(Y/N)";
105         cin>>s;
106     }
107     if(s=='Y'||s=='y')
108     {
109         main();
110     }
111     else                                            //释放数组空间
112     {
113         Delete(A,row);
114         Delete(B,row);
115     }
116     return 0;
117 }

四.运行截图

 

五.收获体会

第一点,这次结对开发的过程让我学会了利用已有资源进行程序的开发,正是有了上次一位数组求最大子数组的基础,这次求二维数组最大子数组才有了正确的思路。

 

第二点,这是和世通的第二次结对开发程序,他的思路很清晰,编程能力也很好,有很多值得我学习的地方。以后应该还有很多合作的机会,我都会珍惜的。

 

第三点,我觉得结对开发这个主意应该早点应用到我们的学习中,这种方法下我们会尽力去思考问题的解决方法,基础差一点的在另一方的影响下也会学到不少实用的东西。而不是遇见不会的就百度一个程序去应付老师而造成恶性循环,给自己扣上一个“不会编程”的帽子来逃避。

六.合影

转载于:https://www.cnblogs.com/zglsh/p/4369598.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

木炭怎么获得_木炭机一体化流程中制做木炭是怎么完成的

关注我们获得更多精彩内容木炭机一体化流程中制做木炭是怎么完成的&#xff0c;木炭机生产线中炭化炉是核心设备。炭化炉炭化过程决定了木炭质量和效果。木炭机生产线中炭化过程需要经历三个不同温度阶段。三个不同温度阶段对薪棒的炭化作用不同。炭化好坏标志着木炭机制炭效果…

【转载】网易将军令工作原理

最近开始玩梦幻手游&#xff0c;为了领以前端游的返利必须输入将军令&#xff0c;那个已经一年没用了&#xff0c;输入了几次都提示错误&#xff08;后来证实是系统繁忙而已&#xff09;&#xff0c;我以为是将军令时间不对了&#xff0c;所以用了下官网的修复功能。也对将军令…

返回数据_多层数据返回匹配值

↑↑↑点击上方图片&#xff0c;了解详情Access Switch函数示例&#xff0c;分享源码。一、问题描述&#xff1a;想实现如下功能&#xff0c;发现用iff嵌套方式太复杂&#xff0c;有没有更简单的方法&#xff1f; A1≤750 返回5.0 750&#xff1c;A1≤865 返回5.…

HDU1114 Piggy-Bank 完全背包

题意&#xff1a; 给出一个存钱罐的空罐时的质量和装了钱之后的质量&#xff0c;再给出一些硬币的质量和相应的价值&#xff0c;问存钱罐里的钱最少可能为多少。 这道题就是完全背包的问题&#xff0c;注意初始化。 完全背包与01背包不同的是第二次遍历的时候要顺序而已。 初始…

jquery datatables 学习笔记

最近项目中用到了BootStrap做后台&#xff0c;在选择表格插件的时候发现了jquery datatables。 功能是很强大&#xff0c;但是网上的例子比较少。在经过一段时间的努力可算是搞出来了。 官网地址&#xff1a;http://www.datatables.net/ 官网上的例子比较简单&#xff0c;基础的…

mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!

作者&#xff1a;极客小俊 一个专注于web技术的80后我不用拼过聪明人&#xff0c;我只需要拼过那些懒人 我就一定会超越大部分人!CSDN极客小俊&#xff0c;原创文章, B站技术分享个人博客: cnblogs.com前端htmlcssjavascript技术讨论交流群: 281499395后端phpmysqlLinux技术交流…

当电压放大电路的开路增益和输出电阻固定后_晶体管放大电路的性能分析与应用...

关于三极管共射极放大电路的基本分析方法(见附录1)&#xff0c;我们之前有聊过。本文重点与大家分享下电路的性能分析&#xff0c;尤其电路的频率响应与选频特性&#xff0c;还是非常有趣的。主要内容有&#xff1a;输入输出电阻通频带如何提高放大倍数1节5号电池可以放大电路吗…

移动设备和SharePoint 2013 - 第5部分:自定义应用

博客地址&#xff1a;http://blog.csdn.net/foxdave原文地址在该系列文章中&#xff0c;作者展示了SharePoint 2013最显著的新功能概观——对移动设备的支持。该系列文章&#xff1a;移动设备和SharePoint 2013 - 第1部分&#xff1a;概述移动设备和SharePoint 2013 - 第2部分&…

java递归实现多级菜单栏_java利用递归调用实现树形菜单的样式

一&#xff1a;需求现有以需求就是把某一个帖子的全部评论展示出来。二&#xff1a;分析关于对帖子的评论分为主评论和子评论&#xff0c;主评论就是对帖子的直接评论&#xff0c;子评论就是对评论的评论。三&#xff1a;思路先获取某一个帖子的全部主评论&#xff0c;递归判断…

mysql in 保持顺序_IN条件结果顺序问题_MySQL

bitsCN.comIN条件结果顺序问题项目中需要记录用户的浏览历史&#xff0c;我的意见是前端直接存cookie里&#xff0c;可是前端说cookie内容太多&#xff0c;要求传递id&#xff0c;后端返回数据&#xff0c;结果就产生如下的问题。1.据前端说&#xff0c;url中的数组传递是无序的…

(部分转载,部分原创)java大数类(2)

NYOJ 773 开方数 http://acm.nyist.net/JudgeOnline/problem.php?pid773 1 import java.util.Scanner;2 3 public class Main{4 public static void main(String[] args){5 int n;6 double p;7 Scanner cin new Scanner(System.in);8 w…

python3 logging com1_python-logging-基础(1)

在执行用例的时候&#xff0c;往往会遇到各种问题&#xff0c;遇到问题后很难去定位import loggingclass Logs:def __init__(self,filepath,name):#self.namename#self.filepathfilepathself.configRead_config(Config_Http)#重新定义日志名字self.loggerlogging.getLogger(sel…

python 复数求模_Python基础语法知识汇总(学习党的最爱!)

本文章包含了Python一系列基本知识&#xff0c;其中包括&#xff1a;基本数据类型&#xff08;整数&#xff0c;浮点数&#xff0c;复数&#xff0c;字符串&#xff09;&#xff1b;分支语句&#xff1b;异常处理&#xff1b;函数&#xff1b;局部变量与全局变量&#xff1b;递…

JAVA装mysql_已经安装了mysql,怎么能在java程序里使用SQL?

展开全部1、安装62616964757a686964616fe4b893e5b19e31333335323437SQLServer2000安装SQLServer2000补丁SP3安装SQLServer2000 for SP3的驱动程序(先打补丁sp3&#xff0c;再安装针对sp3的驱动程序&#xff0c;安装补丁时&#xff0c;为保险起见&#xff0c;两种验证方式的都装…

用对工具,抖音、某站视频轻松下载~

相信大部分小伙伴都有过这样的困扰&#xff0c;平时我们在刷短视频的时候就发现一段我们需要的视频。想下载时才发现&#xff0c;“保存”按钮是灰色的。 这个时候我们可以通过复制视频链接的方式来下载视频。下面给大家介绍四种万能视频下载工具&#xff0c;大家记得点赞收藏再…

flask 上传excel 前端_flask-restful编写上传图片api

Flask-RESTful是用于快速构建REST API的Flask扩展。我最近在使用Flask-Restful Vue.js写一个轻量博客时有一个前端后端上传图片的需求。在Flask-Restful的官方文档中并没有相关的内容。下面是我谷歌查找资料的总结。引入FileStorageflask-restful的参数解析中并没有文件类型&a…

qdir 类似工具_qdir 类似工具_支持 Win8.1,全能资源管理器 Q-Dir 5.74 发布

Q-Dir是一款帮助用户管理本地文件和文档的工具。支持快速访问定位本地磁盘、网络驱动器、USB移动设备及其他存储设备中的文件或文档。依靠强大的Quadro-View技术&#xff0c;使得Q-Dir成为一款优秀的文件管理工具。Q-Dir文件管理软件特色&#xff1a;• 收藏夹&#xff1a;快速…

面试题:求所占字符

/* 在32位系统下&#xff0c;分别定义如下两个变量&#xff1a;char *p[10],char(*p1)[10],sizeof(p),sizeof(p1)分别值为___________。 */ #include <stdio.h> #include <stdlib.h>void main() {char *p[10],(*p1)[10],p2[10],p3;printf("%d,%d,%d,%d,%d,%d&…

python pyquery安装_win7下python安装pyquery

安装pyquery之前首先要明确一点&#xff0c;easyinstall 是一款python包管理器&#xff0c;类似于node的npm&#xff0c;用于安装python的扩展包&#xff0c;它安装的包是以*.egg的方式。要安装pq需要经历以下步骤&#xff1a;1&#xff1a;下载easyinstall设置环境变量&#x…

织梦直接往数据库写入数据

x: 不是必须的 1: 值为1 0: 值为0转载于:https://www.cnblogs.com/bushe/p/4425298.html