我有一个大广场。我想把这个正方形分成小正方形。我需要所有可能的组合。我知道组合有无数种,但我有一个限制。我有最小正方形的固定尺寸。
我可以使用蛮力来实现它。但它太长了。
对于这个任务有更好的算法吗?
Thanks!
那么这个问题只有当我们做出两个假设时才有解决方案(否则有无限的组合)
1)最小的正方形有固定的大小
2)切割大方块的方式也是固定的,就好像将方块放入一个网格中,网格中的线按小方块的大小分开。
还有第三个假设可以使问题变得更容易一些
3)大正方形的边长是小正方形的K倍。其中K是整数。
如果两个假设都成立,我们可以继续:
求 N 个(N 为整数)最小正方形的数量:大小为 N*small-size 的正方形
if ((big-size % N*small-size)==0)
Number += (big-size / N*small-size)^2
else
Number += ((big-size / N*small-size)^2) * (big-size % N*small-size)
* (大号%Nelse 条件中的小尺寸)是存在的,因为如果大方块没有除以 N,那么当将 gid-width 为 N 的大方块“网格化”时,我们将剩下一个“分数部分”。这样我们就可以再次开始划分(再次网格化),但偏移量为 1、2 或 N 小步。步数为(大尺寸 % N小尺寸)。
同样,这些步骤只有在满足 3 个假设的情况下才成立。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)