#include<iostream>
using namespace std;
int n;
int dp[1005];
int main(){
cin >> n;
dp[0]=1;
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
dp[i]+=dp[j-1]*dp[i-j];
}
}
cout << dp[n];
return 0;
}
#include <bits/stdc++.h>
using namespace std;
long long dp[1001][1001];
int main(){
int n;
while (cin >> n){
memset(dp, 0, sizeof(dp));
for (int i = 0; i <= n; i++){
for (int j = 0; j <= i; j++){
if (j){
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
} else{
dp[i][j] = 1;
}
}
}
cout << " " << dp[n][n] << endl;
}
}
以下为公式求解:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
long long sum = 1;
for (int i = 0; i < n; i++){
sum = sum * (2 * n - i) / (i + 1);
}
cout << sum / (n + 1) << endl;
return 0;
}