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

2021-10-03 11:03:45 字數 1007 閱讀 3861

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

有一長度為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思路:剛開始也想用遞迴、回溯一遍遍檢測,後來發現乙個規律,比如:1=1 1種

2=1+1、2=2 2種

3=1+1+1、3=1+2、3=2+1 3種

4=1+1+1+1、4=1+1+2、4=1+2+1、4=2+1+1、4=2+2 5種

5=1+1+1+1+1、5=1+1+1+2、5=1+1+2+1、5=1+2+1+1、5=2+1+1+1、5=1+2+2、5=2+1+2、5=2+2+1 8種

到這裡估計大家已經看出來了,與斐波那契數列一樣在n大於2時,前兩項之和等於第三項,也可以是看1和2的個數,全為1或者全為2的時候為一種,而當1的數量大於2的時候看1,2的數量大於1的時候看2,3個1乙個2變動2的位置在1的個數加一,當有兩個2乙個1的時候,變動1的位置在2的個數上加1,當偶數全為2而奇數只有乙個1的時候就可結束,但是前面用斐波那契數列的方法容易很多。

**如下:

#include

using

namespace std;

int sum=

0,n;

intdgs

(int n)

else

if(n==2)

else

}int

main()

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

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