第4-5课:铺瓷砖问题

本文详细探讨了如何使用状态压缩的动态规划方法解决铺瓷砖问题。讲解了问题分析、状态定义、状态转移、状态的初始值和结果,以及如何计算每一行的状态。在算法实现部分,介绍了算法主体和深度优先搜索策略,特别是如何通过递归方法实现状态的穷举搜索和状态值的累加计算。最后,总结了状态压缩动态规划在铺瓷砖问题中的应用,并鼓励读者探讨其他解决方案。
摘要由CSDN通过智能技术生成

铺瓷砖、铺地板、在电路板上嵌入芯片等问题,都属于一类问题,基本上可以描述为在一个 N × M 的平面空间中摆放一些形状固定的物品,要求覆盖整个平面空间,问有多少种摆放方法。在某些情况下还会增加一点难度,比如在平面上标记一些位置为“坏”点,摆放物品时要避开这些位置等。这类问题传统上是使用状态压缩的动态规划方法解题,因状态递推关系复杂,常用深度优先搜索(DSF)辅助状态的遍历。近些年也流行使用轮廓线动态规划方法求解,但其本质上还是状态压缩。这一课我们就用传统的状态压缩动态规划方法解决铺瓷砖问题。

问题分析

铺瓷砖(地板)问题通常以格子为单位给出 N × M 这样的类似棋盘的平面空间,通常 N 或 M 中的一个明显小于另一个,比如本课要讲的题目:有一块面积为 N × M (N ≤ 6、M ≤ 500)的房间,现在有面积为 1 × 2 和 2 × 1 的地板无数个,要给整个房间铺上地板,有多少种铺地板的方法?题目给出了一个例子,就是当 N = 4、M = 2 的情况,共有 5 种铺法:

enter image description here<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹泡泡的小猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值