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