1. 程式人生 > >演算法訓練 瓷磚鋪放 遞迴

演算法訓練 瓷磚鋪放 遞迴

問題描述

  有一長度為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,代表地板的長度

輸出格式

  輸出一個數,代表所有不同的瓷磚鋪放方法的總數

樣例輸入

4

樣例輸出

5
#include<iostream>
using namespace std;
int n;
int ans=0;

void dfs(int m)
{
	if(m<0)return;
	if(m==0)
	{
		ans++;
		return;
	}
	
	dfs(m-1);
	dfs(m-2);
	
	
}

int main()
{
	cin>>n;
	dfs(n);
	cout<<ans;
}