问题描述
有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?
解题思路:
每一步只有俩种状态,直接递归2种状态即可;
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define read(a) cin>>a
#define set(a,b) memset(a,b,sizeof(a))
int ans;
int n;
void dfs(int num,int a)
{
if(a>num)
return ;
if(a==num)
{
ans++;
return ;
}
dfs(num,a+1);
dfs(num,a+2);
}
int main()
{
read(n);
ans=0;
dfs(n,0);
cout<<ans<<endl;
}