蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了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 時,下面就是一種合法方案。藍 紅 黃 紅 黃 由於牆壁是乙個環形...