1. 程式人生 > >【遞推】ZSC1072: 數學、不容易系列之二—— LELE的RPG難題

【遞推】ZSC1072: 數學、不容易系列之二—— LELE的RPG難題

思路如下:

f(n) = 1, ... , n-2 , n-1, n
前n-2個已塗好後,塗第n-1個即有2種情況:

  1. n-1的色與n-2和1的色都不相同,那麼n就是剩下的那個色,沒有選擇。
    即就是f(n-1)
  2. n-1的色與n-2不相同但與1個色一樣,那麼n的色就有2個色選擇.
    即就是f(n-2)*2

綜上得:f(n) = f(n-1) + 2*f(n-2); 別忘了驗算得出n的範圍。

#include<iostream>
using namespace std;
int main()
{
    long long arr[52];
    arr[1]=3;
    arr[2]=6;
    arr[3]=6;
    for(int i=4;i<=50;i++)
    {
        arr[i]=arr[i-1]+2*arr[i-2];
    }
    int n;
    while(cin>>n)
    {
        cout<<arr[n]<<endl;
    }
    return 0;
}