给定有限网格中的位置,计算单元尺寸

时间:2014-12-01 21:27:52

标签: algorithm

我检查过是否曾经问过这个问题,但我找不到任何类似的问题。这更像是一个算法问题,并不局限于任何特定的编程语言。所以,我的问题如下。

提供的数据

  1. 矩形网格,' G'固定宽度和高度:(W,H)。
  2. ' n'的绝对位置的数组' A1'网格中的块:A1 = [(x0, y0),(x1,y1),...,(xn-1,yn-1)]。
  3. 数组中的每个块都是一个带有4条边的简单矩形。
  4. 阵列中所有块的面积之和' A1' = 网格的总面积' G'换句话说,阵列' A1'有尽可能多的 填充整个网格所需的块' G'
  5. 阵列中的位置' A1'不按任何特定顺序排列。
  6. 位置值表示块的左上角。
  7. 没有任何区块重叠。
  8. 问题:计算每个块的大小(宽度和高度)。即,计算(w0,h0),(w1,h1),......,(wn-1,hn-1)。

    我觉得这个问题可以推广到任何维度的空间。

1 个答案:

答案 0 :(得分:1)

我现在看到你正在寻找一种方法将分区网格划分为具有给定左上角的矩形块。但是,一般来说,还有不止一种方法可以做到这一点。例如。给定左下方4x4网格中的3个左上角A,B和C,右边两组块中的任何一个都解决了这个问题:

A.B.    AaBb    AaBb
....    aabb    aabb
C...    Ccbb    Cccc
....    ccbb    cccc

您可以根据需要从此网格的多个副本中创建更大的网格。由k个副本构成的网格(因此使用3k块)将具有2 ^ k个不同的解决方案。

此外,特定问题实例不需要任何解决方案。例如,至少有一个网格方块未被左侧的问题实例覆盖:

A.      Aa      A.
.B      .B      aB