zoukankan      html  css  js  c++  java
  • 764. Largest Plus Sign

    题目大意:

        就是一个由1和0组成的正方形矩阵,求里面最大的加号的大小,这个大小就是长度。

        

    什么鬼啊,本来想自己想的,结果看了半天没看懂具体什么意思,然后查了下题解,希望有人说一下意思,结果一上来就是思路,还直接动态规划四个大字,我也是呵呵了

    思路一:暴力Brute Force

        就是用i, j 循环每一个位置,判断该位置的上下左右的最长“1序列”,复杂度大概是n3

        ***这个据说过不了

    思路二:动态规划Dynamic Programming

        说实话看完源码才想到的,感觉挺好的,直接看源码大把,很好理解,反正大概就是正向扫一遍,连续的1递增,比如0111011就是0123012,然后反向再扫一遍就是,取最小值。0121011

        然后从上到下扫一遍,再从下到上扫一遍,同样取最小值

        

     1 class Solution {
     2 public:
     3     int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) {
     4         int map[505][505];
     5         memset(map,0,sizeof(map));
     6         for(int i=0;i<mines.size();i++)
     7         {
     8             map[mines[i][0]][mines[i][1]] = 1;
     9         }
    10         int dp[505][505];
    11         memset(dp,0,sizeof(dp));
    12         for(int i=0;i<N;i++) {
    13             int count = 0;
    14             for(int j=0;j<N;j++) {
    15                 count = map[i][j]==0?++count:0;
    16                 dp[i][j] = count;
    17             }
    18             
    19             count = 0;
    20             for(int j=N-1;j>=0;j--) {
    21                 count = map[i][j]==0?++count:0;
    22                 dp[i][j] = min(count, dp[i][j]);
    23             }
    24         }
    25 
    26         for(int i=0;i<N;i++) {
    27             int count = 0;
    28             for(int j=0;j<N;j++) {
    29                 count = map[j][i]==0?++count:0;
    30                 dp[j][i] = min(count, dp[i][j]);
    31             }
    32             
    33             count = 0;
    34             for(int j=N-1;j>=0;j--) {
    35                 count = map[j][i]==0?++count:0;
    36                 dp[j][i] = min(count, dp[i][j]);
    37             }
    38         }
    39         int ans = 0;
    40         for(int i=0;i<N;i++) {
    41             for(int j=0;j<N;j++) {
    42                 ans = max(ans, dp[i][j]);
    43             }
    44         }
    45     }
    46 };
    View Code

    思路三:二分

        这个我也没有试,和暴力有点像,连续的1最大是N个,那么就找N/2长度的试,如果找到了就更长的,反正这样我猜复杂度应该是n2logn ?

        有兴趣的试试吧

  • 相关阅读:
    (Relax njuptoj)1009 数的计算(DP)
    Eclipse使用技巧总结(二)
    Ibatis的分页机制的缺陷
    TFT ST7735的Netduino驱动
    超级求爱程序--为我们的程序工作找乐子
    Selenium Grid跨浏览器-兼容性测试
    PHP一般情况下生成的缩略图都比较不理想
    库目录和头文件目录中生成画图函数
    根据PHP手册什么叫作变量的变量?
    数据库的最基本的逻辑结构组成架构
  • 原文地址:https://www.cnblogs.com/liwenchi/p/8306379.html
Copyright © 2011-2022 走看看