标签:
Give you a convex(凸边形), diagonal n-3 disjoint divided into n-2 triangles(直线), for different number of methods, such as n=5, there are 5 kinds of partition method, as shown in Figure
3 3 4 5
Case #1 : 1 Case #2 : 2 Case #3 : 5
#include <cstdio> #include <iostream> using namespace std; int dp[20]; int f(int n) { if(dp[n]) return dp[n]; if(n == 2 || n == 3) return 1; if(n == 4) return 2; int ret = 0; for(int i=2; i<n; i++) { ret += f(i) * f(n-i+1); } return dp[n] = ret; } int main () { int n, m; scanf("%d", &n); for(int kase=1; kase<=n; kase++) { scanf("%d", &m); printf("Case #%d : %d\n", kase, f(m)); } return 0; }
标签:
原文地址:http://www.cnblogs.com/AcIsFun/p/5351141.html