题解:通过分析,可以得到当N为奇数的时候结果是0,只有N为偶数的时候结果是依据递归方程变化的F(N)=4*F(N-2)-F(N-4)。
N | F(N) |
0 | 1 |
2 | 3 |
4 | 11 |
6 | 41 |
8 | 153 |
10 | 571 |
12 | 2131 |
分析每个F(N)的过程时候可以看出F(N)的 结果跟3倍的F(N-2),2倍的F(N-4),……F(0)有关,
直接分析结果的时候我发现F(N)=4*F(N-2)-F(N-4)。+_+*
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int a[35],n;
a[0]=1;a[1]=0;a[2]=3;
for(int i=3;i<=30;i++)
{
if(i%2==0)
{
a[i]=4*a[i-2]-a[i-4];
}
else a[i]=0;
}
while(cin>>n&&n!=-1)
{
cout<<a[n]<<endl;
}
return 0;
}