二分木を一緒に数えましょう--------------------------------- dp

ここに画像の説明を挿入

ここに画像の説明を挿入

分析:
https : //blog.csdn.net/qq_43690454/article/details/105292305
この質問と同じルーチン
f [i] [j]:iノードとmリーフノードの
状態方程式の数を表す: f [i] [j] = f [i] [j] + f [im-1] [j-jj] * f [m] [jj]
mおよびjjは列挙できます

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
ll f[100][100];
ll n,m;
int main()
{

		memset(f,0,sizeof f);
		f[0][0]=f[1][1]=1;
		for(int i=1;i<=55;i++)
		{
			for(int j=1;j<=i;j++)
			{
				for(int k=0;k<i;k++)
				{
					for(int p=0;p<=j;p++)
					{
						f[i][j]=(f[i][j]+f[i-k-1][j-p]*f[k][p])%MOD;
					}
				}
			}
		 } 
		 
	while(~scanf("%lld %lld",&n,&m)){
		cout<<f[n][m]<<endl;
	}
}
公開された元の記事572件 賞賛された14件 ビュー10,000件以上

おすすめ

転載: blog.csdn.net/qq_43690454/article/details/105293351