假设我有一个7x7的正方形。我可以用其他正方形(即1x1,2x2.....6x6的正方形)来填充这个正方形。如何使用最少的小正方形填满整个正方形,请帮我解答。
s
为奇数时,必须选择m
和n
的值,以便所得到的矩形可以用最少的正方形填充。似乎没有一种立即显而易见的方法来确定最佳配置,因此我建议想出一种算法来找出可以用最少数量的正方形填充m x n
大小的矩形(这是一个稍微简单的问题,我相信它可以用递归算法解决)。所需总正方形数将等于2 x ([number of squares in m x n rectangle] + 1)
。您可以使用循环来检查1
到s/2
之间所有m的大小。首先检查n是否为偶数。如果n是偶数,则答案为4,因为没有一种方法可以将3个正方形或2个正方形拼在一起以制作另一个正方形,因此这解决了所有可能情况的一半。
我只是想提出一个非常规的想法,因为我觉得这可能有所帮助,并且希望能够推进问题的解决。我感觉它可能与哥德巴赫猜想有一定的相关性。该算法对于较大的值来说可能过长,而且我不确定有多少优化正在发生。
现在我的想法是尝试枚举所有三元组(n1,n2,n3)
,其中n1 + n2 + n3 = n
且n1,n2,n3
都是素数(均>= 2)且n >= 7
且n1 <= n2 <= n3
现在让我详细描述我的算法:
现在我的想法是找到所有可能的三元组(n1,n2,n3)
,使其符合上述定义。接下来设置n_s = n1 + n2
。如果n_s > n3
,就按照上述图像进行操作;否则,交换n_s
和n3
。
现在的问题是剩下的白色矩形(应该彼此相等)。
让n4 x n3
表示矩形,其中:
n4 = n - 2 * n3 \\if following the depicted example
枚举所有可能的三元组 (n41, n42, n43)
(将 n 视为 n = n4,因此 n3 >= 7),以及 (n31, n32, n33)
(将 n 视为 n = n3,因此 n3 >= 7)。接下来找到 n_s3 == n_s4
的值,并且它们都是它们可能的最大值。
例如:
假设 x3 = 17
和 x4 = 13
Enumeration of x3 = 17:
2 + 2 + 13
3 + 3 + 11
5 + 5 + 7
Enumeration of x_s3:
4 = 2 + 2
6 = 3 + 3
10 = 5 + 5
12 = 5 + 7
14 = 3 + 11
15 = 2 + 13
Enumeration of x4 = 13:
2 + 2 + 7
3 + 5 + 5
Enumeration of x_s4:
4 = 2 + 2
8 = 3 + 5
9 = 2 + 7
10 = 5 + 5
由于 10
是 13 和 17 之间共享的最大值,因此您可以在(两个矩形中)放置一个 10x10 的正方形,现在您有了一个非平行四边形,这使得填充变得越来越困难,但可能是(我感觉)朝着正确的方向。
欢迎所有反馈。
s
分解成质数。然后针对每个质数sp
解决问题。对于sp x sp
和s x s
,答案将是相同的。最小的质数可能会给出最低的结果。我没有证明这一点,但我手动检查了17 x 17以下的情况。
这是Otaias关于偶数s
得到4的概念的推广。通过手工操作,我获得了以下结果:
s minimum number of squares:
2 4
3 6
5 8
7 9
11 10
13 11
17 12
n x n
(其中n
总是整数,对吗?)且n
可以被2整除(即n
是偶数),则您始终可以将四个(n/2) x (n/2)
的正方形精确地放入其中。没有一种方法可以将3个或2个正方形拼在一起以制作另一个正方形,因此这解决了所有可能情况的一半问题。 - SGM1