藍橋杯遞推 牆壁塗色

2021-10-09 23:05:48 字數 995 閱讀 4625

蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了3 種顏料分別是紅、黃、藍,然後把房間的牆壁豎直地劃分成 n 個部分,蒜頭希望每個相鄰的部分顏色不能相同。他想知道一共有多少種給房間上色的方案。

例如,當n=5時,下面就是一種合法方案。

藍紅黃紅黃

由於牆壁是乙個環形,所以下面這個方案就是不合法的。

藍紅黃紅藍

input

乙個整數t,表示資料的組數。(1≤t≤100)

t個整數n,表示房間被劃分成多少部分。(1≤n≤50)

output

t個整數,表示每組給牆壁塗色的合法方案數。

sample input 114

sample output 1

總結反思:

1.以後再有這種先給出了f[1] f[2] f[3]…的題型,就要想一想是不是可以像斐波那契數列那樣可以有規律的推倒呢

2.這種題其實就是純數學題,分情況討論,看看倒數第二個位置和第乙個位置的顏色是不是相等:

(1)相等的話,倒數第乙個有兩種選擇 2 * f(n-2)

(2)不想等,倒數第乙個位置就只有一種可能 f(n-1)

兩種情況並不相交,這樣總的次數就等於 f(n) = 2 * f(n-2) + f(n-1)

3.遞推和遞迴還是有區別的,遞推是推倒乙個通用的公式,如果能通過公式來求結果,絕不去用遞迴,遞迴的時間效率太低了。

上**:

#include

"iostream"

using

namespace std;

long

long f[51]

;int

main()

while

(t--

)return0;

}

數量重要,質量更重要,不要急,不要圖快,慢慢來穩紮穩打,就是最快的速度

藍橋杯 牆壁塗色

蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了3 種顏料分別是紅 黃 藍,然後把房間的牆壁豎直地劃分成 n 個部分,蒜頭希望每個相鄰的部分顏色不能相同。他想知道一共有多少種給房間上色的方案。例如,當 n 5時,下面就是一種合法方案。由於牆壁是乙個環形,所以下面這個方案就是不合法的。輸...

藍橋杯 計蒜客之牆壁塗色

題幹 蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了 33 種顏料分別是紅 黃 藍,然後把房間的牆壁豎直地劃分成 nn 個部分,蒜頭希望每個相鄰的部分顏色不能相同。他想知道一共有多少種給房間上色的方案。例如,當 n 5時,下面就是一種合法方案。由於牆壁是乙個環形,所以下面這個方案就是...

牆壁塗色 dp

題目描述 蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了 3 種顏料分別是紅 黃 藍,然後把房間的牆壁豎直地劃分成 n 個部分,蒜頭希望每個相鄰的部分顏色不能相同。他想知道一共有多少種給房間上色的方案。例如,當 n 5 時,下面就是一種合法方案。藍 紅 黃 紅 黃 由於牆壁是乙個環形...