求子矩阵的最大和

面试题一道,应该是做出来了..

代码如下:

原理就是枚举矩阵的边界 然后用动态规划解决
代码如下:

int  get_max(int  matrix[3][3],int row,int clou)
{
    
for(int i = 0;i<row;i++)
    {
        
for(int j = i+1;j<=row;j++)
        {
            
if(j==(i+1))
            {
                
for(int k = 0;k<clou;k++)
                {
                    N[i][j][k] 
= matrix[k][i]; 
                } 
                
            }
            
else
            {
                
for(int k = 0;k<clou;k++)
                {
                    N[i][j][k] 
= N[i][j-1][k] + matrix[k][j-1];
                     
                }
            }
        
/*    for(int k = 0;k<clou;k++)
            {
                int m = 0;
                for(int h= i;h<j;h++)
                    m += matrix[k][h];
                N[i][j][k] = m;
            }
*/
        }
    }

    
int maxt = 0;
    
for(i = 0;i<row;i++)
        
for(int j = i+1;j<=clou;j++)
        {
            
int t = max_array(i,j,clou);
            cout
<<i<<" "<<j<<" "<<t<<endl; 
            
if(t>maxt)
                maxt 
= t;
        }

    
return maxt;
}
void main()
{
    
int g[3][3= {{1,2,3},{4,5,6},{7,8,9}};
    cout
<<get_max(g,3,3);

 

 

posted @ 2010-08-18 15:03  David Luo  阅读(445)  评论(0编辑  收藏  举报