点击这里查看题目
一道动态规划的题,在草稿纸上试着画画,把公式推出来就很容易了。
n为奇数时,F[n]=0;
n为偶数时,F[n]=F[n-2]+F[n-4]*F[2]+F[n-6]*F[4]+……+F[2]*F[n-4]+F[n-2];
为了方便,把F[0]赋值1,使得F[n-2]可以表述为F[n-2]*F[0]
#include<iostream>
using namespace std;
long long ans[55];
int main()
{
for(int i=0;i<=50;i++)ans[i]=0;
ans[0]=1;
ans[2]=1;
for(int i=4;i<=50;i+=2)
{
for(int j=0;j<=i-2;j+=2)
{
ans[i]+=ans[j]*ans[i-2-j];
}
}
int n;
while(cin>>n)
{
cout<<ans[n]<<endl;
}
}