状压例题(广场铺砖)

本文介绍了如何使用动态规划和状态压缩解决一个关于广场用1*2小砖铺砌的问题。针对W行H列且W,H<=11的情况,分析了深度优先搜索和广度优先搜索的局限性,并提出利用动态规划的方法,通过考虑前一行的状态推导当前行的合法状态,以降低时间空间复杂度。" 82947493,7744143,深入理解Java简单工厂模式,"['Java', '设计模式', '简单工厂模式', '工厂模式', '类创建型模式']
摘要由CSDN通过智能技术生成

广场铺砖

有一个W行H列的广场,需要用1*2小砖铺盖,小砖之间互相不能重叠,问有多少种不同的铺法?
只有一行2个整数,分别为W和H,(1<=W,H<=11)

输出格式

只有1个整数,为所有的铺法数。

样例数据

input

2 4
output

5

数据规模与约定

样例解释:

时间限制:1s
空间限制:256MB


一开始看到这道题的时候,其实会想到的就是搜索,但是!!!!!

因为w,h<=11,很容易想到采用搜索的方法,可以采用深搜或宽搜均可。
尽管w,h<=11,不很大,但是用1*2的砖铺,深度最大可达到11,这样,如果采用深搜,对于每一层都需要回溯,时间复杂度也很高。
如果采用宽搜,每一个点都有2种铺法,因此可以扩展出2个结点,要求所有的解,必须扩展全部树结构,如果11层结点,是个完全二叉树,结点数量可达211*11 =2121 ,无论空间和时间都难以承受。
因此我们需要采用其他方法。

所以需要用到状态压缩由题意易得,铺的地砖,只会对这层或者下层的地砖有影响;就是说,第i行就表示第i个阶段的状态&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值