社畜ビジネスマンが N 人円卓に座って、腕が交差しないように全員が握手する方法は何通りあるか。
ll memo[60]; ll f(int n) { ll ans = 0; if(n==0) return 1; if(memo[n]) return memo[n]; for(int i=0;i<=n-2;i+=2) { int j=n-2-i; ans+=f(i)*f(j); } return memo[n]=ans; } class HandsShaking { public: long long countPerfect(int n) { memset(memo, 0, sizeof(memo)); return f(n); }
成功体験++