zoukankan      html  css  js  c++  java
  • [每日一题] leetcode 221. 最大正方形

    用dp

    如果matrices[i][j] == '0'  dp[i][j] = 0  continue;

    如果是左边界或者上边界 并且  dp[i][j] = 1;

    否则 如果左  上 左上三个都是1  dp[i][j] = min(dp[i - 1][j - 1], dp[i][j - 1], dp[i - 1][j]) + 1;

    否则 dp[i][j] = 1;

    return 最大的dp值的平方;

    class Solution {
    public:
        int dp[330][330];
        int maximalSquare(vector<vector<char>>& matrix) {
            memset(dp, 0, sizeof(dp));
            int n = matrix.size();
            int m = matrix[0].size();
            int max_v = 0;
            for(int i = 0; i < n; i++)
            {
                for(int j = 0; j < m; j++)
                {
                    if(matrix[i][j] == '0') continue;
                    if(i == 0 || j == 0) dp[i][j] = 1;
                    else 
                    {
                        if(matrix[i - 1][j - 1] == '1' && matrix[i - 1][j] == '1' && matrix[i][j - 1] == '1') dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])) + 1;
                        else dp[i][j] = 1;
                    }
                    max_v = max(max_v, dp[i][j]);
    
                }
            }
            return max_v * max_v;
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    <O(n),O(1)>的LCA
    hdu6110
    ACM模板
    prufer编码
    UvaLive6893_The_Big_Painting
    HDU5669
    Codeforces786B
    二分图部分总结
    Git简介和Windows下安装步骤
    笔记本电脑插入耳机后无法使用解决办法
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/14735889.html
Copyright © 2011-2022 走看看