题目链接
题意:用 1 * 2 的瓷砖覆盖 n * m 的地板,问共有多少种覆盖方式?
思路:用2进制的01表示不放还是放,第i行只和i-1行有关,枚举i-1行的每个状态,推出由此状态能达到的i行状态:如果i-1行的出发状态某处未放,必然要在i行放一个竖的方块,所以我对上一行状态按位取反之后的状态就是放置了竖方块的状态。然后用dfs搜索在i行放横着的方块的所有可能,并且把这些状态累加上i-1的出发状态的方法数,如果该方法数为0,直接continue。
本文介绍了一个使用动态规划和二进制策略来解决如何用1*2的瓷砖覆盖n*m地板的问题。通过递归搜索每行的放置状态,并结合前一行的状态更新方法数,最终得出所有可能的覆盖方式总数。此外,还讨论了用p*q瓷砖覆盖M*N地板的充要条件,涉及面积和整除性原则。
题目链接
题意:用 1 * 2 的瓷砖覆盖 n * m 的地板,问共有多少种覆盖方式?
思路:用2进制的01表示不放还是放,第i行只和i-1行有关,枚举i-1行的每个状态,推出由此状态能达到的i行状态:如果i-1行的出发状态某处未放,必然要在i行放一个竖的方块,所以我对上一行状态按位取反之后的状态就是放置了竖方块的状态。然后用dfs搜索在i行放横着的方块的所有可能,并且把这些状态累加上i-1的出发状态的方法数,如果该方法数为0,直接continue。

被折叠的 条评论
为什么被折叠?