码迷,mamicode.com
首页 > 编程语言 > 详细

返回一个二维整数数组中最大子数组的和

时间:2018-10-21 16:51:14      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:src   alt   using   http   二维数组   png   else   代码   while   

实验要求:

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

2二维数组中连续的一个子矩阵组成一个子数组,每个 子数组都有一个和。

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

实验思路:

          1.首先确定子数组的最大上界,从第一行依次向下,规定最大子数组的范围。

   2.确定子数组的行列类型。

   3.用一维子数组的方法求出子数组的最大和,求出最大值。

   4.最后将子数组的最大上界下降1,再循环。

实验代码

 #include<iostream>
using namespace std;
void main ()
{
    int i,j,m,n,l=0,A[100][100];
    cout<<"输入矩阵行列数";
    cin>>m>>n;
    if(m>100||n>100)
    {
        cout<<"请重新输入:";
        cin>>m>>n;
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            cin>>A[i][j];
        }
 
    }
    int sum[100]={0},max=0,result=A[0][0];
 
    for(i=0;i<m;i++)
    {
        while(l+i<m)
        {
            for(j=0;j<n;j++)
            {
                sum[j]=sum[j]+A[l+i][j];
 
            }
            max=0;
            for(j=0;j<n;j++)
            {
                if(max+sum[j]>sum[j])
                {
                    max=max+sum[j];
                }
                else
                {
                    max=sum[j];
                }
                if(max>result)
                {
                    result=max;
                }
            }
            l++;
        }
        l=0;
        for(j=0;j<n;j++)
        {
            sum[j]=0;
        }
 
    }
 
    cout<<result;
}
运行截图
 技术分享图片

实验总结

  本次试验是上次求一维整数最大子数组的和的升华,将整数改成二维数组,基本思路与一维数组相似,加入循环将最大子数组上界下降循环求出。

实验伙伴   (李鹏,谷豪磊)

技术分享图片

 

 

 

 

返回一个二维整数数组中最大子数组的和

标签:src   alt   using   http   二维数组   png   else   代码   while   

原文地址:https://www.cnblogs.com/lipeng0520/p/9825355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!