一。

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

代码主要函数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. SparkConf加载与SparkContext创建(源码阅读二)

    紧接着昨天,我们继续开搞了啊.. 1.下面,开始创建BroadcastManager,就是传说中的广播变量管理器.BroadcastManager用于将配置信息和序列化后的RDD.Job以及Shuff ...

  3. es let2

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. MVC图片上传

    HTML代码: <form method="post" enctype="multipart/form-data"> 上传图片:<input ...

  5. 关于NGINX的502的装逼打怪之路

    写日志之前先copy一段nginx502的原因,从某网看到如下,然而这并不是重点,最重要还是看博主手敲的东西. 一.NGINX 502错误排查 NGINX 502 Bad Gateway错误是Fast ...

  6. [转]jquery getJSON 数据联动(采用序列化和反序列化获取数据) .

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    ...

  7. js判断是否是移动设备登陆网页

    var browser = {            versions: function () {                var u = navigator.userAgent, app = ...

  8. Chrome插件概览(一) – The basics

    转载http://lvjava.com/?p=582 原文见https://developer.chrome.com/extensions/overview.html Chrome Extension ...

  9. 动态规划小结(dynamic programming)

    动态规划在很多情况下可以降低代码的空间时间复杂度. 判断一道问题能否应用动态规划,需要关注问题是否具有最优子结构,当前规模的问题的解在之前问题的解里面,还要注意的是要满足无后效性的原则.随后就是寻找递 ...

  10. C++学习基础十二——纯虚函数与抽象类

    一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...