2045--着色問題

有排成一行的n個方格,用紅(Red)、粉(Pink)、綠(Green)三色塗每個格子,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色.求全部的滿足要求的塗法.

##


如果最後一個格子可以和第一個相同,則很簡單n個格子的染法爲3*2^(n-1)種

那最後一個格子必須想通只需3*2^(n-1)減去最後一個格子與第一個格子相同的染法種數,而當第一個格子與最後一個格子相同時,恰好爲此題n-1個格子時的染法種數。
可得出遞推r(n) = 3*2^(n - 1) - r(n - 1) 從第三項開始符合遞推。

、、、、、、、
或者找規律吧。

#include<stdio.h>
int main()
{
    int i,n;
    long long a[55]={3,6,6};
        for (i=3;i<55;i++)
            a[i]=a[i-1]+2*a[i-2];
    while (scanf ("%d",&n)!=EOF)
    {
        printf ("%lld\n",a[n-1]);
    }
    return 0;
}
發佈了41 篇原創文章 · 獲贊 0 · 訪問量 8105
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章