PKU2506Tiling

从这篇的标题可以看出……个寂寞,第一眼看到这个标题,大部分人绝对是一脸蒙的。
在这里插入图片描述

回归正题。
有人说,dp太难了,说我怎么一上来就写dp的题目(其实是自己觉得难),所以今天就降一个level,讲道递推的题。
题目如下:

【题目描述】

题目名:PKU2506Tiling

【描述】

对于一个2行 N N N列的走道。现在用12,22的砖去铺满。问有多少种不同的方式。

下图是一个2行17列的走道的某种铺法。

在这里插入图片描述

【输入】

整个测试有多组数据,请做到文件底结束。每行给出一个数字 N , 0 ≤ n ≤ 250 N,0 \le n \le 250 N0n250

【输出】

如题

【样例输入】

2
8
12
100
200

【样例输出】

3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251

原题链接:原题链接

【算法分析】

其实这题用dp、递推还是递归都行,为了使题目简单理解点,我就用递推吧。

【数据存储】

因为有多组数据,又要求我们做到文件底结束,所以要用while循环:

int n;
while(cin>>n){
   
	……………………
}

【数组含义】

数组含义嘛……其实就是指此时的面积用12,22方砖去铺满有几种方式。

【递推公式】

自己枚举几个就出来了,这里直接放出来:

	f[i]=f[i-2]*2+f[i-1];

这些都搞懂后,代码自然就出来了。

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#define maxn 255
#define ull unsigned long long
using namespace std;
int n
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值