求二维数组最大子数组

组员:李金吉、赵天

思想:二位子数组的思想基本上与一维数组求和相同,采用穷举法,只不过是增加了纵向的遍历。

代码如下: 

#include "stdafx.h"
#include<iostream>
#define null -858993460
using namespace std;


void main()
{
    /*int arr[]={8,9,10,-1,20,-30,4};
    int arr2[]={-9,-1,-4,-123};
    int arr3[]={0};
    int arr4[]={7,9,8};
    int arr5[3];*/
    int a[][100]={{5,6,-3,8,-9,2},{1,-12,20,0,-3,-5},{-9,-7,-3,6,7,-1}};
   // int yiwei_maxsub_list(int list[],int length);
    int erwei_maxsub_list(int list[][100],int x,int y);
    /*cout<<"一维数组:"<<endl;
    cout<<yiwei_maxsub_list(arr,7)<<endl;
    cout<<yiwei_maxsub_list(arr2,4)<<endl;
    cout<<yiwei_maxsub_list(arr3,1)<<endl;
    cout<<yiwei_maxsub_list(arr4,3)<<endl;
    cout<<yiwei_maxsub_list(arr5,0)<<endl;*/
    cout<<erwei_maxsub_list(a,3,6)<<endl;
      
}

/*
int yiwei_maxsub_list(int list[],int length)
{
    int a[100]={0};
    int max;
    int i,j;
    int k=0;

    if(list==NULL||length==0)
    {
        cout<<"error!inter is null!";
        return 0;
    }
    
    
    for(i=0;i<length;i++)
    {
        a[k]=list[i];
        for(j=i;j<length;j++)
        {
            a[k+1]=a[k]+list[j+1];
            k++;
        }
    }
    max=a[0];
    for(i=0;i<k;i++)
    {
        if(max<a[i])
        {
            max=a[i];
        }
        
    }
    return max;
}*/

int erwei_maxsub_list(int list[][100],int l,int w)
{
    int m[100][100]={0}, n[100][100]={0}, max,i,j,s,t,k;
    for(t=0;t<l;t++)
    {
        k=0;
        for(i=0;i<w;i++)
        {
            m[t][k]=list[t][i];
            for(j=i;j<w;j++)
            {
                m[t][k+1]=m[t][k]+list[t][j+1];
                k++;
            }
        }
    }s=k;
    for(int d=0;d<s;d++)
    {
        k=0;
        for(i=0;i<l;i++)
        {
            n[k][d]=m[i][d];
            for(j=i;j<l;j++)
            {
                n[k+1][d]=n[k][d]+m[j+1][d];
                k++;
                
            }
        }
    }

    max=n[0][0];

    for(i=0;i<k;i++)
    {
        for(j=0;j<s;j++)
            if(max<n[i][j])
            {
                max=n[i][j];
            }
    }    
    return max;



}


截图:

原文地址:https://www.cnblogs.com/lijinji/p/3612455.html