藍橋杯 瓷磚鋪放 搜尋

2021-10-22 03:38:51 字數 828 閱讀 7011

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

【輸出形式】

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

【樣例輸入】

【樣例輸出】

解題思路:

一共兩種鋪瓷磚的選擇,長度為1和長度為2的,以n=4舉例,先是四層遞迴,每一層都是選擇長度為1的,a記錄瓷磚的總長度,當a=n時,++num,返回,如果a>n 直接返回,再將第4個瓷磚選擇長度為2的。重複以上過程直到遞迴結束,解釋的不太清楚,**比較好理解,直接看**吧

#include

using

namespace std;

void

dfs(

int a,

int n,

int& num)

if(a > n)

//a超過n就返回

return

;dfs

(a +

1, n, num)

;//鋪長度為1的瓷磚

dfs(a +

2, n, num)

;//鋪長度為2的瓷磚

}int

main()

藍橋杯 瓷磚鋪放 遞迴

問題描述 有一長度為n 1 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 1 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 程式設計用遞迴的方法求解上述問題。in...

藍橋杯 演算法訓練 瓷磚鋪放

問題描述 有一長度為n 1 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 程式設計用遞迴的方法求解上述...