分析:卡特兰数,具体请看,注意一下组合数的求法
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 using namespace std; 6 const int maxn=55; 7 long long dp[maxn][maxn]; 8 int n; 9 void init(int m){ 10 for(int i=0;i<=m;i++) 11 dp[i][0]=1; 12 for(int i=0;i<=m;i++) 13 dp[i][i]=1; 14 for(int i=2;i<=m;i++){ 15 for(int j=1;j<i;j++) 16 dp[i][j]=dp[i-1][j-1]+dp[i-1][j]; 17 } 18 } 19 int main() 20 { 21 cin>>n; 22 init(2*n); 23 cout<<dp[2*n][n]/(n+1)<<endl; 24 }