//关键点:C(m,n) = C(m-1,n-1) + C(m-1,n)
static Map<String,Long> map= new HashMap<String, Long>();
private static long comb(int m,int n){
String key= m+","+n;
if(n==0)
return 1;
if (n==1)
return m;
if(n>m/2)
return comb(m,m-n);
if(n>1){
if(!map.containsKey(key))
map.put(key, comb(m-1,n-1)+comb(m-1,n));
return map.get(key);
}
return -1;
}
private static long comb2(int m,int n) {
long[][] dp = new long[m+1][n+1];
for(int i=0;i<=m;i++) {
dp[i][0] = 1;
}
for(int i=1;i<=m;i++) {
for(int j=1;j<=n&&j<=i;j++) {
dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
}
}
return dp[m][n];
}