HRBUST - 2186 铺地砖(思维)

探讨使用2*1地板砖铺满3*n矩形地的算法,通过递推公式解决铺砖方案数量问题,适用于计算机科学与算法设计的学习。

这次我们用2 * 1的地板砖来铺地,地是一块3 * n的矩形,你能告诉我有多少种铺地的方案么?

 

Input

本题有多组测试数据,每组测试数据包含一个正整数n(0 <= n <= 40)。

Output

对于每组测试数据输出铺地的种类数。

Sample Input

4

5

6

Sample Output

11

0

41

题意:略,正常人能看懂。

题解:看到例子5输出0,仔细思考,只要是奇数都是0,偶数自己画出2的来,然后结合例子,推出公式,公式是什么呢,看代码,就能懂,上代码:

#include <iostream>
using namespace std;
typedef long long ll;
ll a[50];
void init(){
	a[0]=1;//这个需要初始化为1,很容易想到
	a[1]=0;
	a[2]=3;
	for (int i = 3; i <= 40;i++){
		if(i&1) a[i]=0;
		else a[i]=a[i-2]*4-a[i-4];//递推式
	}
}
int main(){
	init();
	int n;
	while(cin >> n){
		cout << a[n] << endl;
	}
	return 0;
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心脏dance

如果解决了您的疑惑,谢谢打赏呦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值