本题可以使用俩种方法即递推和母函数。
首先贴上递推的代码:
#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;
}
如果使用母函数的话可以直接贴母函数的模板,关于母函数的讲解:
本文介绍了解决特定问题的两种方法:递推和母函数。递推方法通过逐步迭代来求解,而母函数则是一种基于数学变换的技术。文章提供了递推法的完整代码示例,并附带了母函数的解释链接。
1623

被折叠的 条评论
为什么被折叠?



