Datahub
数据改变生活

1606: 瓷砖铺放

发表时间:2022-10-27 19:40

1606: 瓷砖铺放

时间限制: 1 Sec   内存限制: 512 MB

题目描述

有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?
例如,长度为4的地面一共有如下5种铺法:
4=1+1+1+1
4=2+1+1
4=1+2+1
4=1+1+2
4=2+2
编程用递归的方法求解上述问题。

输入

只有一个数N,代表地板的长度

输出

输出一个数,代表所有不同的瓷砖铺放方法的总数

样例输入 Copy

4

样例输出 Copy

5

解析:

有点像搜索,也有点像递归。直接看代码

#include<bits/stdc++.h>

using namespace std;

int ans,n;

void dg(int x){

if(x>n) return; //当前填的数目大于n就是出错

if(x==n){ans++;return;} //当前填的数目=n说明就是答案,答案数+1

for(int i=1;i<=2;i++) //枚举下面一个填的是1还是2

dg(x+i);

}

int main(){

ans=0;cin>>n;dg(0);

cout<<ans<<endl;

return 0;

}


文章分类: 算法例题
分享到:
QQ:258506508                                     联系电话:020-000000    000-000000                                   联系邮箱:xxx@.co.m                                     联系地址:XXX省XXX市XXX县XXX路