考虑到特定尺寸的区域,我需要找出用于完全铺设该区域的路面石块数量。假设我有一个100平方米的空地板和20x10厘米和30x10厘米大小的石头。我必须尽可能少地使用两种尺寸的宝石铺设该区域。有人知道计算这个的算法吗?
(对不起,如果我的英语不好)
首选C#。
答案 0 :(得分:1)
这是一类称为包装问题的问题。
这个DevX article提供了背景和大纲方法而无需直接为您解决作业(它还提供了代码,但您必须考虑一下将其应用到您的情况中)。
答案 1 :(得分:1)
你可以在头脑中解决这个问题(假设要填充的区域是矩形)。如果你必须填充N个方块的区域,并且你的瓷砖是2x1和3x1,你永远不需要超过两个2x1瓷砖。这给出了你需要的总瓦数N / 3(四舍五入)除了N = 1的情况,这是不可能的。
证明: 假设您的区域是A x B,并且A和B都不是1.假设不失一般性A!= 1.
您可以轻松地使用3x1平铺平铺矩形区域A x 3。重复此模式以尽可能多地填充。 如果没有剩下的行,你就完成了(你用3x1瓷砖平铺了整个区域) 如果剩下一行,则填充3x1平铺,直到剩下0,1或2个空格。 0 =>你做完了,1 =>用两个2x1替换最后的3x1,2 =>用2x1填充最后一个方格。 如果剩下两行,则执行类似的构造。您将留下0列(已完成),1列(填充2x1)或2列(填充两个2x1)。