【递推】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;
}
posted @ 2018-12-13 14:42  楠木v  阅读(130)  评论(0编辑  收藏  举报