我终于自己想出来一题了,前两题都是看了别人的代码才写的所以就不发出来了。
我的思路:
设f(n-1)=x+y;其中x是第(n-1)个为O时的方法个数,y是第(n-1)个非O时的的方法个数。
那么f(n)=x*2+y*3=2*(x+y)+y=2*f(n-1)+y;因为y非O,所以(n-1)个字符只能是E或F,所以y=f(n-2)*2;
我的思路:
设f(n-1)=x+y;其中x是第(n-1)个为O时的方法个数,y是第(n-1)个非O时的的方法个数。
那么f(n)=x*2+y*3=2*(x+y)+y=2*f(n-1)+y;因为y非O,所以(n-1)个字符只能是E或F,所以y=f(n-2)*2;
所以f(n)=2*f(n-1)+2*f(n-2);
#include<iostream>
using namespace std;
void main()
{
_int64 a[41];
a[1]=3;
a[2]=8;
for(int i=3;i<41;i++)
{
a[i]=(a[i-1]+a[i-2])*2;
}
while(cin>>i)
{
printf("%I64d\n",a[i]);
}
}