hdu.2045 不容易系列之(3)—— LELE的RPG难题

//这题主要难在前面的三个不规律答案,(写一下就能出,题主偷懒不想写WA了几次,后面乖啦就过了),后面的递推式子f(n)=f(n-1)+2*f(n-2)。

后面的式子呢f(n-1)容易理解,就是n-1项和第一项不同,所以第N项只能选一个色。
f(n-2)项呢就有点难度,n-1项和第1项相同的情况下,那么第n项和第n-2项肯定和第一项色不同,而第n项的数目可以用第n-2项的数目来表示,即:f(n-2)*2

AC代码:

#include<iostream>
#include<cstdlib>
using namespace std;
long long a[51];

long long sum(int n)
{
  if(n==1)
    return 3;
  if(n==2)
    return 6;
  if(n==3)
    return 6;
  if(a[n]==0)
  {
    a[n]=sum(n-1)+2*sum(n-2);
  }
  return a[n];
}

int main()
{
  for(int i=0;i<51;i++)
  {
  a[i]=0;
  }
  int n;
  while(cin>>n)
  {
    cout<<sum(n)<<endl;
  }

  return 0;
}

posted @ 2020-08-30 16:57  天天掉头发  阅读(97)  评论(0编辑  收藏  举报
返回顶端