演算法訓練 瓷磚鋪放
阿新 • • 發佈:2018-12-09
問題描述 有一長度為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 <stdio.h>
// 列舉1,2兩種可能,如果長度超出n就是達到遞迴的邊界,等於n就是一種解
int n;
int cnt;
void f(int k)
{
if(k > n)
return ;
if(k == n)
cnt ++;
f(k+1);
f(k+2);
}
int main()
{
scanf("%d", &n);
f(0);
printf("%d", cnt);
return 0;
}