zoukankan      html  css  js  c++  java
  • 求一个矩阵中最大的二维矩阵 【微软面试100题 第三十五题】

    题目要求:

      求一个矩阵中最大的二维矩阵(元素和最大).如:

      1  2  0  3  4

      2  3  4  5  1

      1  1  5  3  0

      中最大的是4  5

           5  3.

      要求:1)写出算法;2)分析时间复杂度;3)写出相关代码。

      参考资料:编程之美 2.15

    题目分析:

      从矩阵开头逐个求2*2矩阵的和,找出最大,时间复杂度O(M*N),M/N为行/列;

    代码实现:

    #include <iostream>
    
    using namespace std;
    
    const int M = 3;
    const int N = 5;
    
    int FindMaxMatrix(int a[][N],int &res_i,int &res_j);
    
    int main(void)
    {
        int res_i,res_j;
        int a[M][N] = {{1,2,0,3,4},{2,3,4,5,1},{1,2,5,3,0}};
        int max = FindMaxMatrix(a,res_i,res_j);
        cout << "The max matrix is:" << endl << a[res_i][res_j] << "  " ;
        cout << a[res_i][res_j+1] << endl<<a[res_i+1][res_j] << "  " << a[res_i+1][res_j+1] << endl;
        cout << "and the max sum is:" << max << endl;
        return 0;
    }
    int FindMaxMatrix(int a[][N],int &res_i,int &res_j)
    {
        int maxSum = INT_MIN,sum;
        for(int i=0;i<M-1;i++)
            for(int j=0;j<N-1;j++)
            {
                sum = a[i][j]+a[i+1][j]+a[i][j+1]+a[i+1][j+1];
                if(maxSum < sum)
                {
                    maxSum = sum;
                    res_i = i;
                    res_j = j;
                }
            }
        return maxSum;
    }
  • 相关阅读:
    C++ 11 右值引用以及std::move
    poj2299--B
    Linux Socket编程注意事项
    Using Qt to build an Omi App for iOS (and Android)
    openwrt 3g模块上网
    详谈隐藏Tabbar的几种方法
    ZOJ 3529 A Game Between Alice and Bob(博弈论-sg函数)
    uva 10574
    【MySQL案例】HA: GTID_MODE配置不一致
    Swift UIView 层次调整
  • 原文地址:https://www.cnblogs.com/tractorman/p/4064274.html
Copyright © 2011-2022 走看看