#include<iostream>
#include<math.h>
using namespace std;
int f[151][301]; //f[m][n]表示外层边长不超过m的n的自共轭Ferrers图的个数
int main()
{
for(int i=1;i<151;i++)
{
f[i][1]=1;
f[i][0]=1;
}
for(int i=2;i<301;i++)
{
for(int j=1;j<151;j++)
{
if(j<sqrt(double(i)))
{
f[j][i]=0;
}
else if(j>(i+1)/2)
{
f[j][i]=f[j-1][i];
}
else
f[j][i]=f[j-1][i+1-2*j]+f[j-1][i];
}
}
int n;
while(cin>>n)
cout<<f[150][n]<<endl;
return 0;
}
#include<math.h>
using namespace std;
int f[151][301]; //f[m][n]表示外层边长不超过m的n的自共轭Ferrers图的个数
int main()
{
for(int i=1;i<151;i++)
{
f[i][1]=1;
f[i][0]=1;
}
for(int i=2;i<301;i++)
{
for(int j=1;j<151;j++)
{
if(j<sqrt(double(i)))
{
f[j][i]=0;
}
else if(j>(i+1)/2)
{
f[j][i]=f[j-1][i];
}
else
f[j][i]=f[j-1][i+1-2*j]+f[j-1][i];
}
}
int n;
while(cin>>n)
cout<<f[150][n]<<endl;
return 0;
}
本文介绍了一个用于计算自共轭Ferrers图数量的算法实现。通过二维数组f[m][n]来记录不同边长的自共轭Ferrers图的个数,并使用动态规划的方法进行填充,最终输出给定数值n对应的图的数量。

175

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



