蒙德里安的梦想(Mondriaan's Dream)_题解&感想
原题链接
0|1题意:
求把 N×M 的棋盘分割成若干个 1×2 的长方形,有多少种方案。
例如当 N=2,M=4 时,共有 5 种方案。当 N=2,M=3 时,共有 3 种方案。
如下图所示:
图片
每组测试用例占一行,包含两个整数 N 和 M。
当输入用例 N=0,M=0 时,表示输入终止,且该用例无需处理。
1|0思路:
可以从数据范围想到用状压
用 f[i,j] 表示前 i 行状态是 j 的所有方案数,j 是一个二进制数,用来表示第 i 行矩形的状态
如 100100 表示的是第一列放竖着的矩形,第二列和第三列放横着的矩形...
显然可以发现,每段'0'都必须是偶数个才是合法方案
于是有了第一个条件
我们还要考虑当这一行可以由上一行的哪些状态转移过来
举个例子:第 i 行是 1001001
那第 i-1 行必须是 1XX1XX1, X代表0||1
换句话 i-1 行是 1 的位置 第 i 行必须是;i-1 行是 0 ,i 行无影响任意填
但是还有个问题,如果把这两个条件分开考虑会有问题
如
00100
00100
__EOF__

本文作者:userName
本文链接:https://www.cnblogs.com/P32sx-qq1309267816-tel18081238250/p/16410379.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/P32sx-qq1309267816-tel18081238250/p/16410379.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】