算法“计算大小为 5*N 的地板可以用大小为 1*5 和 2*5 的瓷砖填充的方式数”

拉惹多吉

这是复制给 ref 的问题的一部分:

*您将获得 5xN 尺寸的地板。您有 2 种不同尺寸的图块:1x5 和 2x5。当然,您可以旋转瓷砖以获得另外 2 个瓷砖尺寸:5x1 和 5x2。您必须按以下方式使用这些瓷砖铺设地板:

  1. 地面空间应完全被瓷砖覆盖。
  2. 您不能破坏瓷砖,即您必须完全使用或根本不使用瓷砖。
  3. 任何瓷砖不应超出地面空间。
  4. 瓷砖应平行于地板边界放置。

您的任务是找出可以将瓷砖铺设在地板上的多种方式*

我能得到一些关于这种方法的帮助吗?提前致谢。

编辑:我现在明白什么时候我们必须计算用 5*1 尺寸的瓷砖填充 5*N 尺寸的地板的方法。使用 dp 我们可以像这样 dp[1]=1,dp[2]=1,dp[3]=1,dp[4]=1,dp[5]=2 和 dp[n]=dp[ n-1]+dp[n-5] http://www.geeksforgeeks.org/count-number-ways-tile-floor-size-nxm-using-1-xm-size-tiles/

但是我不明白当有多个不同大小的瓷砖时如何制定 dp[n] 。您将获得一个大小为 5xN 的地板。您有 2 种不同尺寸的图块:1x5 和 2x5。

发发

一些带有记忆功能的 DP 应该可以解决问题:

def solve(x, memo={}):

    # Access already calculated values
    if x in memo:
        return memo[x]

    # Base cases
    if x < 0:
        raise Exception("Negative values are not allowed")
    if x < 2:
        return 1
    if x == 2:
        return 2

    # Place a 1x5 or a 2x5
    res = solve(x - 1) + solve(x - 2)

    # Fill a space of 5x5
    if 5 <= x:
        res += 8 * solve(x - 5)

    # Store result and return
    memo[x] = res
    return res

for x in range(100):
    print "{}: {}".format(x, solve(x))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以用相同的方式为服务器和客户端编写CoffeeScript库吗?

来自分类Dev

十进制计算时间为25,26和27小时

来自分类Dev

可变参数(包大小为N)和默认参数

来自分类Dev

为什么我不能通过 usint tf.reshape() 将 (None, 375) 重塑为 (25,15)

来自分类Dev

任何人都可以使用Fedora 25在Dell XPs 15 L502x上为HDMI发布有效的配置

来自分类Dev

std :: hash算法和大小

来自分类Dev

是否可以堆叠不规则数组的列表(列表中的每个数组的大小为 1 行和 n 列)?

来自分类Dev

如何在每50行中打印第15和25行?

来自分类Dev

Prolog:将大小为 N 的列表拆分为两个已知大小为 K 和 NK 的列表

来自分类Dev

填充大小为n的数组的方式的数量是否如此,以致于大于数组中的每个元素?

来自分类Dev

在长度为25的数组中存储随机数

来自分类Dev

将随机数存储在长度为25的数组中

来自分类Dev

如何计算特定字体和大小的字符串长度(以像素为单位)?

来自分类Dev

创建大小为n的布尔数组的所有可能方式?

来自分类Dev

算法与输入大小成线性(O(n)),但是如果输入大小为指数,该怎么办

来自分类Dev

从数组中获取大小为n的所有组合的算法(Java)?

来自分类Dev

在O(K)时间中找到大小为N的最大堆中最大K个数的算法?

来自分类Dev

生成大小为k个字符的n个组合的算法

来自分类Dev

遗传算法:一个初始种群大小为N的示例

来自分类Dev

生成大小为n的所有预订单/弱订单的算法

来自分类Dev

分治算法返回大小为 n 的数组 int a[] 中偶数项的总和

来自分类Dev

将d3 y轴时间格式设置为15秒增量和秒%15 == 0?

来自分类Dev

紧密循环-磁盘使用率为100%,四核CPU @ 25%的使用率,磁盘写入速度仅为15MBsec

来自分类Dev

可以用作固定大小(堆栈)和动态大小(堆)的阵列封装器

来自分类Dev

大小写,为空和参数

来自分类Dev

定点:out_Q15 = antilog(in_Q25)计算,避免溢出?

来自分类Dev

我有10点客栈的x轴,范围为[-25,-20 ,,-15,-10,0,10,20,30,40,50]。但我希望折线图从x轴的-15开始。我们如何实现?

来自分类Dev

具有InlineButton样式的NSPopUpButton记录“未知边框样式15和/或控件大小1”

来自分类Dev

如何更改Linux ramdisk的数量和大小(/ dev / ram0-/ dev / ram15)?

Related 相关文章

  1. 1

    我可以用相同的方式为服务器和客户端编写CoffeeScript库吗?

  2. 2

    十进制计算时间为25,26和27小时

  3. 3

    可变参数(包大小为N)和默认参数

  4. 4

    为什么我不能通过 usint tf.reshape() 将 (None, 375) 重塑为 (25,15)

  5. 5

    任何人都可以使用Fedora 25在Dell XPs 15 L502x上为HDMI发布有效的配置

  6. 6

    std :: hash算法和大小

  7. 7

    是否可以堆叠不规则数组的列表(列表中的每个数组的大小为 1 行和 n 列)?

  8. 8

    如何在每50行中打印第15和25行?

  9. 9

    Prolog:将大小为 N 的列表拆分为两个已知大小为 K 和 NK 的列表

  10. 10

    填充大小为n的数组的方式的数量是否如此,以致于大于数组中的每个元素?

  11. 11

    在长度为25的数组中存储随机数

  12. 12

    将随机数存储在长度为25的数组中

  13. 13

    如何计算特定字体和大小的字符串长度(以像素为单位)?

  14. 14

    创建大小为n的布尔数组的所有可能方式?

  15. 15

    算法与输入大小成线性(O(n)),但是如果输入大小为指数,该怎么办

  16. 16

    从数组中获取大小为n的所有组合的算法(Java)?

  17. 17

    在O(K)时间中找到大小为N的最大堆中最大K个数的算法?

  18. 18

    生成大小为k个字符的n个组合的算法

  19. 19

    遗传算法:一个初始种群大小为N的示例

  20. 20

    生成大小为n的所有预订单/弱订单的算法

  21. 21

    分治算法返回大小为 n 的数组 int a[] 中偶数项的总和

  22. 22

    将d3 y轴时间格式设置为15秒增量和秒%15 == 0?

  23. 23

    紧密循环-磁盘使用率为100%,四核CPU @ 25%的使用率,磁盘写入速度仅为15MBsec

  24. 24

    可以用作固定大小(堆栈)和动态大小(堆)的阵列封装器

  25. 25

    大小写,为空和参数

  26. 26

    定点:out_Q15 = antilog(in_Q25)计算,避免溢出?

  27. 27

    我有10点客栈的x轴,范围为[-25,-20 ,,-15,-10,0,10,20,30,40,50]。但我希望折线图从x轴的-15开始。我们如何实现?

  28. 28

    具有InlineButton样式的NSPopUpButton记录“未知边框样式15和/或控件大小1”

  29. 29

    如何更改Linux ramdisk的数量和大小(/ dev / ram0-/ dev / ram15)?

热门标签

归档