UVa 11310

来源:互联网 发布:怎么查询电脑mac地址 编辑:程序博客网 时间:2024/06/15 03:19

题目:有两种瓷砖,1x1的方形以及2x2的L形,问铺满nx2的地面有多少种方法。

分析:数学题,动态规划(DP)。找到递推公式打表计算查询输出。

            因为宽度为2,所以题目很简单不需要使用搜索+dp求解;

            我们发现如果有L形的瓷砖,只能形成2x2(有4种可能)和2x3(有2种可能)的小块组合;

            没有L形瓷砖直接在右侧加两块1x1的方形瓷砖即可;

            所以可以找到递推公式:f(n)= f(n-1)+ 4 * f(n-2)+ 2 * f(n-3);

说明:(⊙v⊙)。

#include <stdio.h>#include <stdlib.h>long long f[45];int main(){f[0] = 1LL;f[1] = 1LL;f[2] = 5LL;for (int i = 3; i <= 40; ++ i) {f[i] = f[i-1] + 4*f[i-2] + 2*f[i-3];}int t, n;while (~scanf("%d",&t))while (t --) {scanf("%d",&n);printf("%lld\n",f[n]);}return 0;} 


原创粉丝点击