一。

在主函数中实现二维数组的输入、

代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组,

在循环中算出之和,编写过程中行列的值赋值错误,但经过调试查找出来了;后来在输出最大子数组的地方遇到麻烦,

考虑不周全用普遍的  if(j%n==0)cout<<endl;来进行换行,导致出现错误,应改为if(j%n==m),m为最大子数组的第一列,

源代码:

#include <iostream>
using namespace std; int a[100][100];
int maxson(int M,int N)
{
int xmin,xmax,ymin,ymax;
int m,n,p,q,t;
int i,j,max=a[0][0],sum=0;
for(xmin=0;xmin<M;xmin++)
for(xmax=xmin+1;xmax<=M;xmax++)
for(ymin=0;ymin<N;ymin++)
for(ymax=ymin+1;ymax<=M;ymax++)
{ sum=0;
for(j=xmin;j<xmax;j++)
for(i=ymin;i<ymax;i++)
{
sum=a[i][j]+sum;
}
if(max<sum)
{
max=sum;
m=xmin; n=xmax;
p=ymin; q=ymax;
}
}
cout<<"最大子数组为"<<endl;
t=n-m;
for(i=p;i<q;i++)
for(j=m;j<n;j++)
{ if(j%t==m)
cout<<endl;
cout<<a[i][j]<<'\t'; }
cout<<endl;
return max; } void main()
{
int M=0,N=0,i,j;
while(!M) //检查输入的M,N否则重新输
{
cout<<"数组的行数: ";
cin>>M;
if(M<=0)
{
M=0;
cout<<"行数必须大于0"<<endl;
}
}
while(!N)
{
cout<<"数组的列数: ";
cin>>N;
if(N<=0)
{
cout<<"列数必须大于0"<<endl;
N=0;
}
cout<<"输入数组的值:"; //输入二维数组的值
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
cin>>a[i][j];
} }
cout<<"您输入的数组为:" ; //输出数组
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
if(j%N==0)
cout<<endl;
cout<<a[i][j]<<'\t';
}
cout<<endl;
cout<<"子数组和为:"<<maxson(M,N)<<endl;
}

2.运行结果

[软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文的更多相关文章

  1. 求一个二维整数数组最大子数组之和,时间复杂度为N^2

    本随笔只由于时间原因,我就只写写思想了 二维数组最大子数组之和,可以  引用  一维最大子数组之和 的思想一维最大子数组之和 的思想,在本博客上有,这里就不做多的介绍了 我们有一个最初的二维数组a[n ...

  2. 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~

    P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...

  3. 查找二维数组list[][]中的最大的子数组的和

    之前做过最大一维数组子数组的和的题目,现在将数组扩展成二维: 代码如下: #include<iostream> #define null -858993460 using namespac ...

  4. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  5. C#6 冒泡 折半查找 二维数组

    人类思维--计算机逻辑思维 逻辑思维--代码实现 写书法: 描红--临摹--碑贴--自成一体--草 章节复习: 数组:一维,二维,多维 一维:豆角.连续,同一类型. 定义:数据类型[] 数组名=new ...

  6. 求二维数组最大子数组的和。郭林林&胡潇丹

    求二维数组子数组的最大值,开始思路不太清晰.先从最简单的开始. 以2*2的简单数组为例找规律, 假设最大数为a[0][0],则summax=a[0][0],比较a[0][0]+a[0][1].a[0] ...

  7. 【剑指offer】二分查找二维数组

    1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 10 3 3 12 2 3 4 5 6 7 8 9 10 例子输出: Yes No No 时间限制:1 秒 内存限制:3 ...

  8. C#学习笔记04--排序/查找/二维数组/交叉数组

    一. 冒泡排序(重点) 思路:  每次比较把较小的放在前面, 大的放到后面; 图解:下图是最坏情况下的排序 ` 冒泡排序m个元素, 就有(m-1)趟排序, 第一趟m-1次, 第二趟 m-2次....  ...

  9. PHP使用array_filter查找二维数组中符合字段和字段值的数据集合

    1.方法: /** * 获取符合字段和字段值的数组集合 * @param array $data 待过滤数组 * @param string $field 要查找的字段 * @param $value ...

随机推荐

  1. mysql处理高并发,防止库存超卖

    先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团购.秒杀.特价之类的活动,而这样的活动有一个共同的特点就是访问量激增.上千甚至上万人抢购一个商品.然而,作为活动商品,库存肯定是很有限的,如何控 ...

  2. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  3. Spring框架的XML扩展特性

    Spring框架从2.0版本开始,提供了基于Schema风格的XML扩展机制,允许开发者扩展spring配置文件.现在我们来看下怎么实现这个功能,可以参考spring帮助文档中的<Extensi ...

  4. Python基础篇【第3篇】: Python异常处理、反射、动态导入、利用反射的web框架

    异常处理 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当P ...

  5. 字典树的C++实现

    此次代码使用了诸多新鲜玩意,比如自动类型推断,模板类等等,感觉真的超级好玩啊. 自己做了一个简易的测试,程序的健壮性什么的还是比较差的,此程序留待以后进行功能补全. #pragma once #inc ...

  6. 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明

    原文http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html   我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一 ...

  7. json转换

    Newtonsoft.Json.JsonConvert.SerializeObject 使用上述语句,将创建的对象, 转换成json格式

  8. peer not authenticated error

    问题背景 系统:OS X El Capitan,10.11.2 IDE:Android Studio 2.0 Preview Java:1.8.0_65 Gradle:2.3 clone了代码后,在i ...

  9. html转义字符

    public static String toHTMLString(String in) { StringBuffer out = new StringBuffer(); for (int i = 0 ...

  10. addEventListener循环绑定出现的问题

    今天 碰到这样一个问题 代码如下 var someth = document.getElementsByTagName("a"); for (var i = 0; i < 1 ...