本文共 650 字,大约阅读时间需要 2 分钟。
题目:
题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案。
分析:这是一个比較经典的题目。网上各种牛B写法一大堆。题解也是
我们能够定义状态:dp【i】【st】:在第 i 行状态为 st 的时候的最慷慨案数、
然后转移方程:dp【i】【st】 = sum (dp【i-1】【ss】)
即全部的当前行都是由上一行合法的状态转移而来。
而状态的合法性由两种铺法得到。第一种横放。注意要求前一行全满。然后竖放,上一行为空。能够留空。
AC代码:
#include#include #include #include #include #include using namespace std;const long long N = 15;long long dp[N][1< n) swap(m,n); if(ans[n][m]) { printf("%lld\n",ans[n][m]); continue; } memset(dp,0,sizeof(dp)); long long len = 1<