要用之前的树作为下一轮的子树,而不是在之前的树的基础上加新的节点
#include<iostream>
#define MAX 21
using namespace std;
long long dp[MAX]={0};
int main(){
int n;
cin >> n;
dp[0] = (long long)1;
dp[1] = (long long)1;
dp[2] = (long long)2;
for(int i = 3; i <= n; i++){
for(int j = 0; j < n; j++ ){
dp[i] += (long long)dp[i-1-j]*dp[j];
}
}
cout << dp[n] << endl;
return 0;
}