题解 | #最大子矩阵#

最大子矩阵

http://www.nowcoder.com/practice/a5a0b05f0505406ca837a3a76a5419b3

#include <iostream>
#include <vector>
#include <climits>

using namespace std;

class solution
{
public:
    int getResult(vector<vector<int>> &matrix)
    {
        // 求前缀和
        for (int i = 1; i < matrix.size(); i++)
        {
            for (int j = 0; j < matrix[0].size(); j++)
            {
                matrix[i][j] += matrix[i - 1][j];
            }
        }
        
        int ret = INT_MIN;
        for (int i = 0; i < matrix.size(); i++)
        {
            for (int j = i; j < matrix[0].size(); j++)
            {
                vector<int> tmp(matrix[0].size());
                for (int k = 0; k < tmp.size(); k++)
                {
                    if (i == 0)
                    {
                        tmp[k] = matrix[j][k];
                    }
                    else
                    {
                        tmp[k] = matrix[j][k] - matrix[i - 1][k];
                    }
                }
                
                ret = max(ret, getSubArrayMax(tmp));
            }
        }
        
        return ret;
    }
    
    // 求连续子数组最大和
    int getSubArrayMax(vector<int> &nums)
    {
        int ret = nums[0];
        int dp = nums[0];
        
        for (int i = 1; i < nums.size(); i++)
        {
            dp = max(dp + nums[i], nums[i]);
            ret = max(ret, dp);
        }
        
        return ret;
    }
};

int main()
{
    int n;
    solution mSolution;
    
    while (cin >> n)
    {
        vector<vector<int>> matrix(n, vector<int>(n));
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cin >> matrix[i][j];
            }
            cin.get();
        }
        cout << mSolution.getResult(matrix);
    }
    
    return 0;
}

全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
头像
昨天 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务