将矩形划分为较小的重叠的算法?

ohh*_*hho 5 c algorithm

将矩形(c struct为4 ints)划分为随机数的较小矩形(返回structs 列表)的算法是什么?如果可以通过参数控制较小矩形的最大和最小尺寸,则更好.

例如

+----------+            +-------+--+
|          |            |       |  |
|          |            |       |  |
|          |    -->     |---+---+--| (good)
|          |            |   |      |
|          |            +---+      |
|          |            |   |      |
+----------+            +---+------+
Run Code Online (Sandbox Code Playgroud)

较小的形状应该是4面,以下不好:

+----------+            +-------+--+
|          |            |       |  |
|          |            |       |  |
|          |    -->     |---+---+--| (not good)
|          |            |          |
|          |            +---+      |
|          |            |   |      |
+----------+            +---+------+
Run Code Online (Sandbox Code Playgroud)

谢谢!

附录:( Moron讨论的矩形)

  +----+--------+
  |    |        |
  |    +---+----+
  |    |   |    | (rectangle-chase)
  +----+---+    |
  |        |    |
  +--------+----+
Run Code Online (Sandbox Code Playgroud)

Axe*_*ing 9

将矩形拆分为两个.递归.

  • @Dave:@ Moron的异议之前接受了这个答案; 这确实是不正确的.此外,仅仅因为OP接受了答案并不意味着我们应该停止寻找更好(或正确)的答案 (3认同)
  • 呃..这不起作用.它错过了一些配置.像追逐银行标志的东西,但完成形成一个矩形.http://bp1.blogger.com/_YdwmIhUxTJY/R6PknAooqlI/AAAAAAAAAco/k6jOGsQOT48/s400/chase-logo.jpg.抱歉没有更好的描述,但我想你明白了:中间的一个正方形,正方形的每一边都延伸到正好接触主矩形的一边. (2认同)