【递推】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;
}

猜你喜欢

转载自www.cnblogs.com/xiaomulei/p/10113940.html