设f【i】表示i个数的方法数
最后出来的数是i的方法数f【i-1】*f【n-i】,(这里i-1+n-i=n-1就可以大致判断出事卡特兰数)
有n个数的方法数等于每个数最后出来的方法数的和
即:,第一个数是0
一个数最后出来的方法数是1——f【0】=1
二个数最后出来的方法数是1——f【1】=2
用卡特兰数推导公式,只用上一层的除法
#include<bits/stdc++.h> using namespace std; long long n,f[20]; int main(){ cin>>n; f[1]=1; for(int i=2;i<=n;i++) f[i]=f[i-1]*(4*i-2)/(i+1); cout<<f[n]; return 0; }