当前位置: 首页 > 知识库问答 >
问题:

地板所需的最小瓷砖数量

钱和安
2023-03-14

我开始学习如何在python中编程,我遇到了这个问题,我只能使用这些函数:

我不是在寻找答案,只是想知道如何解决这个问题。

该问题要求确定覆盖矩形房间地板所需的具有相同方向的相同瓷砖的最小数量。超过地板面积的瓷砖多余部分将被丢弃,不能重复使用。编写一个名为min\u tiles的Python函数,该函数使用4个正整数,即room\u width、room\u length、tile\u width、tile\u length,并生成完全覆盖房间地板所需的最小瓷砖数。

以下是一些例子:

min_tiles(4,4,2,2)=

如果瓷砖是矩形的,则它们只能朝向一个方向,而不能同时朝向两个方向。因此,如果地板是3 x 4,瓷砖是1 x 3,那么在一个方向上需要6块瓷砖才能覆盖地板(丢弃多余的碎片),但在另一个方向上,只需要4块瓷砖才能覆盖地板。在这种情况下,您应该生成最小值,即4。因此,min\u瓷砖(3,4,1,3)=

提前感谢!

共有2个答案

司徒茂实
2023-03-14
def min_tiles_horizontal(room_width,room_length,tile_width,tile_length):
  return math.ceil(room_width / float(tile_width)) * math.ceil(room_length / float(tile_length))

def min_tiles(room_width,room_length,tile_width,tile_length):
  return min(
      min_tiles_horizontal(room_width,room_length,tile_width,tile_length),        
      min_tiles_horizontal(room_width,room_length,tile_length,tile_width))

<代码>min\u tiles\u horizontal仅在平铺水平的情况下计算所需的平铺数量。在min\u tiles中,我们调用min\u tiles\u horizontal两次-一次用于获取水平平铺的数字,一次用于获取垂直平铺的数字(我们通过切换tile\u lengthtile\u width作为参数来获取此值),然后返回这两个数字中的最小值。

float用于进行浮点除法,例如,对于3/float(2),我们将得到1.5(不使用float我们将进行整数除法,我们将得到1)<代码>数学。然后使用ceil将数字四舍五入到最接近的较大数字,例如数学。ceil(2.1)将为我们提供3个,因为当您需要2.1个平铺时,您必须使用3个。

萧业
2023-03-14

您将能够使用动态规划解决方案来解决此问题,但如果您是一般编程新手,这将很困难。您可以假设首先放置一个与地板角对齐的平铺(具有两个可能的方向),放置此平铺后,将创建两个子问题,即较小的矩形。

您还知道,您可以使用带有l x w的一个图块生成n(l)x m(w)n(w)x m(l)矩形。我认为完全适合边界的最大(按面积)这样的矩形将始终是解决方案的一部分。也许试着看看你是否能证明总是这样?

 类似资料:
  • 我试图使用Struts 2 我在 glassfish 服务器上上传时遇到以下错误: 部署过程中发生错误:加载应用程序时出现异常:java.lang.IllegalState异常:ContainerBase.add子级:开始:org.apache.catalina.生命周期异常:java.lang.NoClassDefFoundError: org/spingframewor /core/io/su

  • 我已经遵循了这里和这里的文档(非常直接),但是map视图没有加载任何瓷砖。 我使用HMS工具包,配置向导的结果是成功的。我还设置了api密钥,在我的应用程序类和活动类onCreate中都使用了这一行。 setapikey(HUAWEI_API_KEY); null 相关错误日志: E/hmsmapkit_mapview_151:createDelegate:creator==null E/hmsm

  • 有人能告诉我一种解决以下问题的算法吗: 假设我有一个10*10的瓷砖网格。每个磁贴可以是“满”(玩家不能在上面行走)或“空”(玩家可以在上面行走)。我想遍历并随机填充瓷砖(以创建更有趣的地图),但是我需要所有“空”瓷砖才能访问。下面是一个快速图形: 我们从以下方面着手: 然后仔细检查并填充一些瓷砖: 并删除所有额外的行(仅用于显示): 如您所见,我们现在剩下的地图更有趣,并且可以随机生成(基于我们

  • 我搜索关于如何减少由瓷砖添加的一些样板的想法。下面是我的项目的组织方式。 在我的spring-mvc配置中,我以这种方式配置了瓷砖: 我使用的主布局定义在/WEB-INF/layouts/layouts.xml中: ...使用的模板(/WEB-INF/layouts/default.jspx)类似于以下内容: 正如您可能从spring config中猜到的,实际的视图定义位于“/WEB-INF/v

  • 我找不到struts-tiles2-1.4.0-SNAPSHOT的源代码。jar版本的平铺。jar文件位于http://people.apache.org/~pbenedict/struts-osgi/org/apache/struts/struts-tiles2/1.4.0-SNAPSHOT/location。

  • 我计划使用Spring Boot将MVC应用程序从Spring 3移植到Spring 4。 这个web应用程序使用Apache Tiles。 考虑到百里香叶似乎是Spring的新标准,我有点困惑,并且集成得很好。 在这个应用程序中配置Tiles是一件痛苦的事情。 我们在这个应用程序中有大约20个JSP页面。 问题: 胸腔和瓷砖是相似的概念吗?(模板引擎?) 我已经看到胸腔叶可以和瓷砖一起使用…我不