zoukankan      html  css  js  c++  java
  • 求一个矩阵中子矩阵的和的最大值

      题目:求一个指定矩阵中的子矩阵的和的最大值

     

     

      负责人:赵顺杰 马帅强

     

      在王老师布置该课题的课上时间,赵顺杰和我在纸上讨论了方法,在课下把这个方法补充完整:

      我们先定义了一个3*3的矩阵,首先是子矩阵中元素数为1的矩阵的和,也就是元素自己,然后是元素数分别为2,3,4,6,9的子矩阵。定义一个变量max,将每一个子矩阵的和与max比较,较大的数赋值给max,最后输出max。

     

    #include<iostream.h>
    void main()
    {
        
                int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
                int i,j,d=0;
                int max=0;
                for(i=0;i<=2;i++)//2个
                {
                        for(j=0;j<=1;j++)
    
                            max=(max>a[i][j]+a[i][j+1])?max:a[i][j]+a[i][j+1];
    
                           
                }
                
                    for(j=0;j<=2;j++)
                    {
                        for(i=0;i<=1;i++)
                            max=(max>a[i][j]+a[i+1][j])?max:a[i][j]+a[i+1][j];
                    }
                 
                    for(i=0;i<=2;i++)//1个
                    {
                        for(j=0;j<=2;j++)
                            max=(max>a[i][j])?max:a[i][j];
                    }
     
    
                    for(i=0;i<=2;i++)//3个
                    {
                            j=0;
                            max=(max>a[i][j]+a[i][j+1]+a[i][j+2])?max:a[i][j]+a[i][j+1]+a[i][j+2];
                    }
                    for(j=0;j<=2;j++)
                    {
                            i=0;
                            max=(max>a[i][j]+a[i+1][j]+a[i+2][j])?max:a[i][j]+a[i+1][j]+a[i+2][j];
                    }
                  for(i=0;i<=2;i++)//9个
                  {
                     
                    for(j=0;j<=2;j++)
                    {
                       
                        d=d+a[i][j];
                    }
                    
                    
                  }
                 max=(max>d)?max:d;
                for(i=0;i<=1;i++)//6个
                {
                    j=0;
                       max=(max>a[i][j]+a[i][j+1]+a[i][j+2]+a[i+1][j]+a[i+1][j+1]+a[i+1][j+2])?max:a[i][j]+a[i][j+1]+a[i][j+2]+a[i+1][j]+a[i+1][j+1]+a[i+1][j+2];
                }
                for(j=0;j<=1;j++)
                {
                    i=0;
                       max=(max>a[j][i]+a[j][i+1]+a[j][i+2]+a[j+1][i]+a[j+1][i+1]+a[j+1][i+2])?max:a[j][i]+a[j][i+1]+a[j][i+2]+a[j+1][i]+a[j+1][i+1]+a[j+1][i+2];        
                }
                for(i=0;i<=1;i++)//4个
                {       
                    for(j=0;j<=1;j++)
                    {
                        int c=0;
                        c=c+a[i][j]+a[i][j+1]+a[i+1][j]+a[i+1][j+1];
                        max=(max>c)?max:c;
                               
                    }
                }
                 
              cout<<"子数组的和的最大值是: "<<max<<endl;
    
    }

     

     

      

  • 相关阅读:
    数据分析三剑客之pandas
    python神器 Jupyter Notbook
    数据分析三剑客之numpy
    MySQL之数据备份与还原
    爬虫之增量式爬虫
    文件相关命令(find,tree,tar)文件属性信息 date
    系统通配符号、系统正则符号,grep
    sed命令
    系统用户权限,系统权限位,用户相关命令
    根下目录及目录内详细文件
  • 原文地址:https://www.cnblogs.com/mashuaiqiang/p/3627356.html
Copyright © 2011-2022 走看看