微軟俱樂部程式設計題第一周第二題 矩形覆蓋

2021-09-02 01:41:47 字數 813 閱讀 7338

我們可以用2x1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2x1的小矩形無重疊地覆蓋乙個2xn的大矩形,總共有多少種方法?

我們先把2xn的覆蓋方法記為f(n)。用第乙個1x2小矩陣覆蓋大矩形的最左邊時有兩個選擇,豎著放或者橫著放。當豎著放的時候,右邊還剩下2x(n-1)的區域,這種情況下的覆蓋方法記為f(n-1)。接下來考慮橫著放的情況。當1x2的小矩形橫著放在左上角的時候,左下角也必須橫著放乙個1x2的小矩形,而在右邊還剩下2x(n-2)的區域,這種情況下的覆蓋方法記為f(n-2)。

因此f(n)=f(n-1)+f(n-2)。這個公式就是著名的斐波那契公式!

def

fibonacci

(n):

if n==0:

return

1elif n ==

1or n ==2:

return n

else

:return fibonacci(n-1)

+ fibonacci(n-

2)

def

fibonacci

(n):

if n==0:

return

1if n ==1:

return

1if n ==2:

return

2 p =

1 q =

2for _ in

range

(n-2):

r = p + q

p = q

q = r

return r

微軟俱樂部程式設計題第二週第二題 將矩陣中的元素置零

給定乙個mxn矩陣,如果矩陣中有元素0,則將其所在的行和列都置為0。請使用原地演算法。原題鏈結 例如 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 設定兩個長度分別為m和n的標記陣列分別記錄行和列是否有0,根據標記陣列將某些矩陣元素置0。class soluti...

第一周訓練 E題

函式 f z zf z z 已知 f 1 f 2 f 1 f 2 的值,且對於任意 x 1x 1 有 f x 1 f x f x 1 sin x 2 f x 1 f x f x 1 sin x2 求 f n f n 的值。多組資料。資料組數 t 100 t 100 每組資料報含 3 3 個不超過 1...

暑期第一周演算法題(一)

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2 2,1 輸出 1示例 2 輸入 4 1,2 1,2 輸出 41.基礎思路 我們可以遍歷陣列中的每個數字,如果...