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

要求:

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

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

  3.求所有子数组的和的最大值

实验思路  

  根据老师课上给出的3*6的数据  我们决定设计一个3*6的二维数组进行计算,依次进行比较将最大子数组的和返回

代码

#include <iostream.h>
int main()
{
    int a[3][6];//定义一个3*6的二维数组
    int max;
    int s;//求和
    int count;
    int b[3][7];
    cout<<"请输入二维数组(3*6)中的元素:"<<endl;
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<6;j++)
        {
            cin>>a[i][j];
        }
    }
    for(i=0;i<3;i++)
    {
        count=0;
        for(int j=0;j<6;j++)
        {
            s=0;
            for(int l=0;l<6-j;l++)
            {
                s=s+a[i][j+l];
                b[i][count+l]=s;
            }
            count=count+6-j;
        }
    }
    //求最大数
    max=b[0][0];
    for(int j=0;j<7;j++)
    {
        for(i=0;i<3;i++)
        {
            s=0;
            for(int r=0;r<3-i;r++)
            {
                s=s+b[r+i][j];
                if(max<s)
                {
                    max=s;
                }
            }
        }
    }
    cout<<"最大子数组为:"<<max<<endl;
    cout<<endl;
    return 0;
}

结果截图

 

 

 

二人结对:张宾 王驰

 

 

 

 

  

posted on 2018-10-21 15:35  飞扬的狗  阅读(137)  评论(0)    收藏  举报