• 求二维数组最大子数组


    组员:李金吉、赵天

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

    代码如下: 

    #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;
    
    
    
    }


    截图:

  • 相关阅读:
    bzoj 2618: [Cqoi2006]凸多边形
    BZOJ 4556 [Tjoi2016&Heoi2016]字符串
    BZOJ 4850 [Jsoi2016]灯塔
    BZOJ 2956: 模积和
    PHP 正则表达式
    Linux Centos6.5安装redis3.0 和phpredis
    linux 删除过期文件
    THINKPHP报错 _STORAGE_WRITE_ERROR
    THINKPHP 部署nginx上URL 构造错误
    Linux 修改mysql密码
  • 原文地址:https://www.cnblogs.com/lijinji/p/3612455.html
Copyright © 2020-2023  润新知