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

    由一位数组到求二维数组中的最大子数组  ;开始是想的是把每一行,每一列,中最大的求出来;只有有一个倒置矩阵就能和实现,后来老师一说这个子数可以是几行几列;

    瞬间就感到不是那么容易,开始我和我的好基友就是想依次遍历;for循环;华飞说这样麻烦,会有重复的部分;但是并不影响最大的结果;对于老师的提示:最大的子数组有可能出现在该数组中最大的那个数周围;或正整数最多的行或列;我们也讨论了,但是感觉还是不是很对。。。。纠结最后还是依次遍历吧.....

     
    
    程序如下:
    
    #include<iostream>
    using namespace std;
    #define N 100
    int main()
    {
    int row,column;
    int sum,max;
    int i,k,j,t,m,x,n,s;
    int a[N][N],b[N][N],c[N][N],d[N][N];
    int length,line;
    cout<<"请输入数组的行数:"<<endl;
    cin>>row;
    cout<<"请输入数组的列数:"<<endl;
    cin>>column;
    cout<<"请输入数组元素:"<<endl;
    for(i=0;i<row;i++)
       {
          for(j=0;j<column;j++)
              { 
              cin>>a[i][j];
              } 
        }
    for(i=0;i<row;i++)
       {
          for(j=0;j<column;j++)
             {
                max=a[i][j];
                for(m=1;m<=column-j;m++)
                { 
                sum=0;
                length=1;
                line=i;
                for(x=0;x<row;x++)
                { 
                for(k=j;k<j+m;k++)
                    {
                    sum=sum+a[x][k];
                    }
                    if(max<=sum)
                        {
                        max=sum;
                        length=m;
                        line=x; 
                        b[i][j]=max;
                        c[i][j]=length;
                        d[i][j]=line; 
                        }
                } 
                }
            }
        }
    max=b[0][0];
    t=0;
    n=0;
    for(i=0;i<row;i++)
        {
        for(j=0;j<column;j++)
        { 
        if(max<b[i][j]) 
            {
            max=b[i][j];
            t=i;
            n=j;
            }
        }
        }
    cout<<"最大子数组和是:";
    cout<<max<<endl;
    cout<<"子序列为"<<endl;
    for(i=t;i<=d[t][n];i++)
        {
        for(j=n;j<n+c[t][n];j++)
            {
            cout<<a[i][j]<<'	';
            }
            cout<<endl;
            }
    return 0;
    }

  • 相关阅读:
    Stream流之三级查询
    SpringBoot日期格式的设置
    el表达式
    SpringMV+HuTool之验证码登录
    Spring注解详解
    @ResponseBody注解使用(返回字符串并不跳转)
    每日leetcode-数组-589. N 叉树的前序遍历
    python apply函数
    剑指offer-JZ6 旋转数组的最小数字
    torch.manual_seed()函数
  • 原文地址:https://www.cnblogs.com/songjingchao/p/3612248.html
Copyright © 2011-2022 走看看