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

    求二维数组中各个矩阵和的最大值一种方法是穷举法;

    采用for循环列举出所有子矩阵的和,求出最大值:

    #include<iostream>

    using namespace std;

    int max()

    {

     int n=3,m=3;  //n、m可随意取值,但数组越大,程序反应越慢

    int a[3][3]={1,2,2,4,5,-1,3,41,-6};    

    int b=0;    

    int h=0;    

    int f=0;    

    for(int i=0;i<n;i++)

     {   

           for(int j=0;j<m;j++)   

           {          int x=a[i][j];    int y=i+1;    int k=j+1;

                       if(x>b)     {      b=x;     }

                       while(k<m||y<n)   

                           {          

                              if(y<n)     

                                  y++;   

                              if(k<m)     

                                  k++;     

                                for(int u=i;u<y;u++)    

                               {       for(int v=j;v<k;v++)      

                                        {       h=h+a[u][v];       }       

                                     if(h>b)      

                                       b=h;    

                               }

                               for(int o=j;o<k;o++)   

                              {       for(int p=i;p<y;p++)      

                                       {       f=f+a[p][o];       }     

                                   if(f>b)     

                                      b=f;     

                             }         

                              h=0;    

                             f=0;   

                      } //while  

             }

      }    

                 return b;

    }

    int main()

    {    

               int b=max();    

               cout<<b<<endl;    

               return 0;

    }

  • 相关阅读:
    自学软件测试获取学习资源途径有哪些?
    微信发红包-测试分析
    软件测试初级经验
    面试
    电商项目
    LoadRunner11的安装流程+破解+汉化+下载
    Oracle和Mysql操作上的一些区别
    Android模拟器,ADB命令
    logging
    heapq
  • 原文地址:https://www.cnblogs.com/lpjdbk/p/3611846.html
Copyright © 2011-2022 走看看