Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中查找2D数组中连续1的所有矩形的坐标_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

在Javascript中查找2D数组中连续1的所有矩形的坐标

在Javascript中查找2D数组中连续1的所有矩形的坐标,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我发现了许多问题,询问如何在2D数组中找到最大的连续矩形,有些问题询问矩形的数量,但只有一个问题涉及在1和0的2D中找到覆盖1s区域所需的所有矩形的坐标、宽度和高度 这个问题有一个解决方案,但很难理解,因为它引用了一个外部代码块 我正在处理组成字母像素的2D数组: 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,

我发现了许多问题,询问如何在2D数组中找到最大的连续矩形,有些问题询问矩形的数量,但只有一个问题涉及在1和0的2D中找到覆盖1s区域所需的所有矩形的坐标、宽度和高度

这个问题有一个解决方案,但很难理解,因为它引用了一个外部代码块

我正在处理组成字母像素的2D数组:

0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0这里有一种使用简单算法的方法

计算矩形->A所覆盖的总面积 而到目前为止发现的矩形面积小于 找到一个新的矩形 找到左上角,扫描矩阵并在找到的第一个1处停止 找到右下角,从左上角开始,扫描矩阵并在找到的第一个0处停止 通过将每个单元格设置为1以外的值来标记找到的矩形 将其面积添加到累积面积中 将矩形推送到列表中 常数矩阵=[ [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],//0 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],//1 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],//2 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//3 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//4 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//5 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//6 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],//7 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],//8 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],//9 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//10 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//11 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//12 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//13 [0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],//14 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],//15 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],//16 [0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0] //17 ]; 常数W=mat[0]。长度; 常数H=材料长度; //用矩形覆盖该区域 设总面积=0; 对于let i=0;i0?1:0; } } const rects=[]; 设矩形面积=0; //查找所有矩形,直到其面积与总面积匹配 而直肠面积<总直肠面积{ const rect=findnextect; rects.pushrect; markrect; rectArea+=rect.x2-rect.x1+1*rect.y2-rect.y1+1; } console.logrects; 函数findExtract{ //找到左上角 让foundCorner=false; 常数rect={x1:0,x2:W-1,y1:0,y2:H-1}; 对于设i=0;i对于let i=rect.x1;i,这非常有用。它的工作速度提高了约10倍,比我遇到的任何其他东西都要容易理解,谢谢。我在一个开源javascript库中使用这段代码,您希望得到怎样的认可?