本题可以使用俩种方法即递推和母函数。
首先贴上递推的代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int q[121][121],n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
q[i][0]=0;
q[i][1]=1;
q[1][i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<=i-1;j++)
{
if(i-j<j) q[i-j][j]=q[i-j][i-j];
q[i][j]=q[i][j-1]+q[i-j][j];
}
q[i][i]=q[i][i-1]+1;
}
printf("%d\n",q[n][n]);
}
return 0;
}
如果使用母函数的话可以直接贴母函数的模板,关于母函数的讲解: