相关疑难解决方法(0)

最大化直方图下的矩形区域

我有一个整数高度和恒定宽度1的直方图.我想在直方图下最大化矩形区域.例如:

 _
| |
| |_ 
|   |
|   |_
|     |
Run Code Online (Sandbox Code Playgroud)

使用col1和col2,答案是6,3*2.

O(n ^ 2)蛮力对我来说很清楚,我想要一个O(n log n)算法.我试图按照最大增加子序列O(n log n)算法的方式来思考动态编程,但我没有继续前进.我应该使用分而治之的算法吗?

PS:如果没有这样的解决方案,请求具有足够声誉的人删除分而治之标签.

在mho评论之后:我的意思是完全适合的最大矩形区域.(感谢j_random_hacker澄清:)).

algorithm

62
推荐指数
5
解决办法
5万
查看次数

找到图像中最大的凸黑区域

我有一个图像,这是一个小切口:

有很多白色和黑色像素的图像

如你所见,它是黑色背景上的白色像素.我们可以在这些像素(或更好的点)之间绘制虚线.通过这些线,我们可以包围区域.

如何在此图像中找到不包含白色像素的最大黑区域?

这是一个小手绘的例子,我的意思是最大的凸黑区域:

小例子

PS:图像不是噪声,它代表水平排序的10000000以下的素数.

algorithm image pattern-finding

43
推荐指数
3
解决办法
6147
查看次数

动态编程 - 最大的方块

我需要在一个充满1和0的巨型文件中找到最大的1的平方.我知道我必须使用动态编程.我将它存储在2D数组中.任何有关找到最大方块的算法的帮助都会很棒,谢谢!

示例输入:

1 0 1 0 1 0
1 0 1 1 1 1
0 1 1 1 1 1
0 0 1 1 1 1
1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

回答:

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
Run Code Online (Sandbox Code Playgroud)

我的代码到目前为止:

int Square (Sq[int x][int y]) {
   if (Sq[x][y]) == 0) {
       return 0;
   }
   else {
       return 1+MIN( Sq(X-1,Y), Sq(X,Y-1), Sq(X-1,Y-1) );
   }
}
Run Code Online (Sandbox Code Playgroud)

(假设已经输入数组的值)

int main() {
    int Sq[5][6]; …
Run Code Online (Sandbox Code Playgroud)

c matrix dynamic-programming

40
推荐指数
3
解决办法
3万
查看次数

给定尺寸的所有矩形的搜索矩阵(选择座位块)

所有,

我一直试图找出如何在一个座位内选择15张票.

编辑:问题是 - 如何找到给定尺寸的所有矩形(例如3x5)的免费座位?

在此输入图像描述

下面是我的表,查询选择4个连续席位(或15或其他),这是好的...

但我想做的是选择说15个座位,这些可以分成多行,即3 x 5,但我希望它们被封锁在一起,即

row 9 ..(some seats)..[5 seats]..(some seats)..
row 8 ..(some seats)..[5 seats]..(some seats)..
row 7 ..(some seats)..[5 seats]..(some seats)..
Run Code Online (Sandbox Code Playgroud)

也就是说,他们将在彼此前面排成3排.row9座位10到25,row8座位10到25,row7座位10到25.

还可能需要考虑座椅块是否具有不同数量的座椅,即角块可以呈弧形以在后部具有比前部更多的座椅.

以ehnaceing SQL或某些算法或某些PHP代码的形式提供的任何指导.一周的大部分时间里,我一直在捣乱自己的大脑.

CREATE TABLE `seats` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `event_id` int(11) DEFAULT NULL,
  `performance` int(11) DEFAULT NULL,
  `block` int(11) DEFAULT NULL,
  `row` int(11) DEFAULT NULL,
  `seat` int(11) DEFAULT NULL,
  `status` int(10) DEFAULT 1,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我的查询到了 - 它返回X席的块组合.

SELECT    a.event_id, a.performance, a.block, …
Run Code Online (Sandbox Code Playgroud)

php mysql algorithm ticket-system

15
推荐指数
1
解决办法
3961
查看次数

如何裁剪到OpenCV中最大的内部边界框?

我在黑色背景上有一些图像,其中图像没有方形边缘(见下图右下方).我想把它们裁剪成最大的矩形图像(红色边框).我知道我可能会失去原始图像.是否可以在OpenCV中使用Python执行此操作.我知道有一些功能可以裁剪到轮廓的边界框,但这仍然会让我在地方留下黑色背景.

在此输入图像描述

python opencv

15
推荐指数
1
解决办法
6792
查看次数

具有相同编号的最大矩形子矩阵

我正在尝试提出一种动态编程算法,该算法在矩阵中找到由相同数字组成的最大子矩阵:

例:

{5 5 8}
{5 5 7}
{3 4 1}
Run Code Online (Sandbox Code Playgroud)

答案:由于矩阵导致4个元素

   5 5 
   5 5   
Run Code Online (Sandbox Code Playgroud)

algorithm matrix dynamic-programming

14
推荐指数
1
解决办法
9420
查看次数

在NxNxN二进制数组中查找仅包含1的最大长方体

给定NxNxN二进制数组(仅包含0或1),我们如何获得具有非平凡解的最大长方体,即在O(N ^ 3)?

-

找到在N×N二进制矩阵中仅包含零但在上部维度中的最大矩形是同样的问题.此外,在我的情况下,最大的矩形可以"穿过阵列的边缘",即空间就像是2D矩阵的圆环.

对于2D数组,如果条目是:

00111
00111
11000
00000
00111
Run Code Online (Sandbox Code Playgroud)

'X'描述的解决方案是

00XXX
00XXX
11000
00000
00XXX
Run Code Online (Sandbox Code Playgroud)

我已经完成了NxN二进制数组的计算,并按照http://tech-queries.blogspot.de/2011/03/maximum-中的想法找到了O(N ^ 2)中最大矩形问题的解决方案.area-rectangle-in-histogram.html.但我不知道如何将它应用于3D阵列.

-

解决方案"越过边缘"的3x3x3阵列示例:

111
100
011

111
001
111

011
110
011
Run Code Online (Sandbox Code Playgroud)

解决方案应该是:

1XX
100
0XX

1XX
001
1XX

0XX
110
0XX
Run Code Online (Sandbox Code Playgroud)

arrays algorithm

12
推荐指数
2
解决办法
1728
查看次数

在c ++中查找2d数组中的最大区域

我需要在c ++中编写递归函数,在2d数组中找到最大区域的数字'1',只包含1或0.

例:

int Arr[5][8] =
{
{ 0, 0, 0, 0, 1, 1, 0, 0, },
{ 1, 0, 0, 1, 1, 1, 0, 0, },
{ 1, 1, 0, 1, 0, 1, 1, 0, },
{ 0, 0, 0, 1, 1, 1, 1, 0, },
{ 0, 1, 1, 0, 0, 0, 0, 0, },
};
Run Code Online (Sandbox Code Playgroud)

可视化示例:http://s23.postimg.org/yabwp6h23/find_largest.png

该阵列的最大区域为12,第二大区域为3,第三大区域为2.

我想用洪水填充算法做类似的事情,但是无法弄清楚如何.

c++ arrays 2d area

8
推荐指数
1
解决办法
4373
查看次数

在其他多边形中找到最大空矩形的算法

场景:有一个矩形空间,里面有任意放置的任意方向的多边形.目的是找到可以安装在矩形空间的空区域内的最大空矩形.下面的这些图像说明了多边形为蓝色的情景,虚线表示可以在每个方案中拟合的最大空矩形.

最大的空矩形1

最大的空矩形2

问题:显然,找到最大的空矩形是计算几何中众所周知的问题,但我在这个领域发现的算法涉及在点(CGAL实现了这一点)和线段中找到空矩形.有没有办法根据我的场景调整这些现有技术?或者有更简单的方法吗?

algorithm computational-geometry

7
推荐指数
1
解决办法
863
查看次数

最大矩形算法实现

我正在尝试用Python 实现Dr. Dobbs的最大矩形算法(清单4).它主要起作用,但是一个特定情况会给出错误的结果,我无法弄清楚原因.

这是我的源代码:

from collections import namedtuple

Point = namedtuple('Point', ('X', 'Y'))

#Y      0  1  2      X
arr = [[0, 0, 0, ], #0
       [1, 0, 0, ], #1
       [0, 0, 1, ], #2
       ]

def area(ll, ur):
    if (ll.X < 0) or (ll.Y < 0) or (ur.X < 0) or (ur.Y < 0):
        return 0.
    return ((ur.X - ll.X) + 1) * ((ur.Y - ll.Y) + 1)

def update_cache(a, c, x):
    M = len(a[0])
    N = …
Run Code Online (Sandbox Code Playgroud)

python algorithm

5
推荐指数
1
解决办法
2846
查看次数