階乗・順列・組合せ
階乗(Factorial)
※3! = 3*2*1
※0!は1
// factorial n! public static long factorial(int n) { if (n<=1) return 1; else return n * factorial(n-1); }
順列(Permutation):並べる順番を区別する
nPm = n!/(n-m)!
証明)abcdeから3つ取って一列に並べる
n=5,m=3
5*4*3 = 5!/2! = 5!/(5-3)!
例)abcを一列に並べる(=つまりabcから三個とって一列に並べる)
3*2*1 = 3! = 3!/(3-3)!
組合せ(Combination):並べる順番に区別無し
nCr = nPr / r! = n! / r!(n-r)!
【Tips】nC1 = n,nCn = 1,nC0 = 1,nCr = nCn-r
証明)abcdeから3つ選ぶ組み合わせ(順序関係なし)
もしabcdeから3つ取って一列に並べるならば、
5P3 = 3! * (組合せ)
(組合せ)= 順列/選ぶ数
5C3 = 5P3/3!