zoukankan      html  css  js  c++  java
  • 求二维数组最大子数组

    组员:李金吉、赵天

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

    代码如下: 

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


    截图:

  • 相关阅读:
    CSS3与页面布局学习总结——Box Model、边距折叠、内联与块标签、CSSReset
    用php实现一个简单的链式操作
    关于php语言的使用!
    NSCalendar NSDateComponents
    IOS 谓词
    NSDate
    IOS asc码替换
    帝国CMS内容模板IF判断
    帝国CMS列表模板页面内容截取
    ios 获取崩溃日志
  • 原文地址:https://www.cnblogs.com/lijinji/p/3612455.html
Copyright © 2011-2022 走看看