标题:找出最大矩阵,并返回其面积
只看楼主
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
结帖率:88.89%
已结贴  问题点数:20 回复次数:8 
找出最大矩阵,并返回其面积
给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。
输入:
[
   ["1","0","1","0","0"],
   ["1","0","1","1","1"],
   ["1","1","1","1","1"],
   ["1","0","0","1","0"]
]

输出: 6

程序请用C语言,不要C++,谢谢!
搜索更多相关主题的帖子: 包含 矩阵 面积 最大 返回 
2020-10-27 11:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
leetcode 给的函数最恶心

程序代码:
#include <stdio.h>
#include <stdint.h>

int main( void )
{
    size_t map[][5] = { {1, 0, 1, 0, 0}
                      , {1, 0, 1, 1, 1}
                      , {1, 1, 1, 1, 1}
                      , {1, 0, 0, 1, 0} };

    ///////////////////////////////////////////////

    const size_t row = sizeof(map)/sizeof(*map);
    const size_t col = sizeof(*map)/sizeof(**map);
    for( size_t c=0; c!=col; ++c )
    {
        size_t deepth = 0;
        for( size_t r=0; r!=row; ++r )
        {
            if( map[r][c] != 0 )
                map[r][c] = ++deepth;
            else
                deepth = 0;
        }
    }

    size_t s_max = 0;
    for( size_t r=0; r!=row; ++r )
    {
        for( size_t c=0; c!=col; ++c )
        {
            size_t deepth = SIZE_MAX;
            for( size_t width=0; c+width!=col && map[r][c+width]!=0; ++width )
            {
                deepth = deepth<map[r][c+width] ? deepth : map[r][c+width];
                s_max = s_max>(width+1)*deepth ? s_max : (width+1)*deepth;
            }
        }
    }
   printf( "%zu\n", s_max );
}
2020-10-27 15:17
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 2楼 rjsp
我现在的系统运行不了,DEV那里 [Note] use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

可是这几个我来回换,都不行。这个帖子容我几天,今天我已经买回来一个西部数据500G的固态硬盘,明天先安装一个 win 8.1 系统,然后安装VS2015。再来试试,谢谢!
2020-10-27 20:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
可是这几个我来回换,都不行。
你把“不行”的情况说一下嘛,我都没法知道是怎么个不行。
2020-10-27 21:11
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:0 
C99以前的版本不支持for循环中括号中声明变量。
 例for( size_t r=0; r!=row; ++r )  ==>
    size_t r;
    for( r=0; r!=row; ++r )
2020-10-27 23:23
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 4楼 rjsp
安装了个win10系统,整个界面都不一样了,不结帖还回复不了

来回换就是将 -std=c99、std=c11、那四个都换了,在DEV中都无法运行

我的VS2015还没安装完成,我在论坛右上角的“在线编程”那里已经通过了
2020-10-30 01:50
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 5楼 zbjzbj
谢谢!今晚挂机让他自动安装,明天再试
2020-10-30 01:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用风过无痕1989在2020-10-30 01:50:57的发言:
来回换就是将 -std=c99、std=c11、那四个都换了,在DEV中都无法运行

跟系统无关,只跟你安装的编译器(TDM-GCC 4.9.2)相关。
我一直都觉得你编译参数填写的地方不对,要不你截个图给我看看。
2020-10-30 08:16
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 8楼 rjsp
我刚安装了新系统,原来那个系统暂时回不去了
2020-10-30 12:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503649-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.342552 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved