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

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

时间:2018-10-21 13:04:41      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:编写   编程   using   程序   数组   nbsp   通过   jpg   names   

源代码
 #include<iostream>
using namespace std;
void main ()
{
    int a,b,c,d,e=0,A[100][100];
 
    cout<<"输入矩阵的行()和列";
    cin>>a>>b;
    if(a>100||b>100)
    {
        cout<<"请重新输入:";
        cin>>a>>b;
    }
    for(c=0;c<a;c++)
    {
        for(d=0;d<b;d++)
        {
            cin>>A[c][d];
        }
 
    }
    int sum[100]={0},max=0,result=A[0][0];
 
    for(c=0;c<a;c++)
    {
        while(e+c<a)
        {
            for(d=0;d<b;d++)
            {
                sum[d]=sum[d]+A[e+c][d];
 
            }
            max=0;
            for(d=0;d<b;d++)
            {
                if(max+sum[d]>sum[d])
                {
                    max=max+sum[d];
                }
                else
                {
                    max=sum[d];
                }
                if(max>result)
                {
                    result=max;
                }
            }
            e++;
        }
        e=0;
        for(d=0;d<b;d++)
        {
            sum[d]=0;
        }
 
    }
 
    cout<<result;
}
运行结果截图
技术分享图片
总结
 本次的课堂作业是返回一个二维整数数组中最大子数组的和,从题目上讲和上一次的课堂作业大同小异,基本上是相同的,也是求取所有子数组的和之后进行比较求出最大值,即为最终的返回值。由于这一次的程序和上一次的程序大同小异,因此按照上一个程序的思路结合这一次程序中所出现的新问题新困难,通过讨论与上网搜寻资料的方式进行了编程。这次的编写程序的重点步骤为以下三处:1)输入一个二维整形数组,要求数组里有正数也有负数。即要求程序中既能处理正数也能处理负数。2)二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和。意思即为在所想要运行的二维数组中每一个连续的子矩阵组为一个子数组,并且计算得出每一个子数组的和,这一步骤应该是整个程序的核心了,任务也是比较重的,最后通过交流以及搜寻资料解决了这一困难。3)求所有子数组的和的最大值。将上一步骤中所求出的所有子数组的和比较得出所有子数组的最大值即为程序的最终返回值。完成这一步骤的程序以后整个程序即为完成了,之后进行运行调试成功。
 
 
 
工作合影
技术分享图片

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

标签:编写   编程   using   程序   数组   nbsp   通过   jpg   names   

原文地址:https://www.cnblogs.com/shijiazhuangtiedaodaxue000/p/9824484.html

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