1. 程式人生 > 實用技巧 >牆壁塗色

牆壁塗色

牆壁塗色

問題描述

蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了 3 種顏料分別是紅、黃、藍,然後把房間的牆壁豎直地劃分成 n 個部分,蒜頭希望每個相鄰的部分顏色不能相同。他想知道一共有多少種給房間上色的方案。
例如,當 n=5 時,下面就是一種合法方案。
|藍|紅|黃|紅|黃|
由於牆壁是一個環形,所以下面這個方案就是不合法的。
|藍|紅|黃|紅|黃|藍|
輸入格式
一個整數 n,表示房間被劃分成多少部分。(1≤n≤50)
輸出格式
一個整數,表示給牆壁塗色的合法方案數。
樣例輸入
4
樣例輸出
18

#include <iostream>
#include <cstdio>
using
namespace std; long long ans[100]; int main() { ans[1] = 3; ans[2] = 6; ans[3] = 6; int n; cin >> n; if (n <= 3) cout << ans[n]; else { for (int i = 4; i <= n; i++) { ans[i] = ans[i - 1] + ans[i - 2] * 2; } cout << ans[n]; } return 0; }