A n m = n ! ( n − m ) ! A^m_n=\frac{n!}{(n-m)!} Anm=(n−m)!n! (n个数取m个排列组合) permutation and combination
C n m = n ! m ! ( n − m ) ! C^m_n=\frac{n!}{m!(n-m)!} Cnm=m!(n−m)!n! (n个数取m个组合) combination
分析1,2,3,4取3个数字排列组合,应用数学公式 A 4 3 = 4 ! ( 4 − 3 ) ! A^3_4 = \frac{4!}{(4-3)!} A43=(4−3)!4! = 24 种排列组合
用代码表示:
public static long pnc(int n, int m){
long numerator = 1;
for(;n>1;n--){
numerator = numerator*n;
}
long denominator = 1;
for(int i=n-m;i>1;i--){
denominator = denominator*i;
}
return numerator/denominator;
}
测试:
public static void main(String args[]){
System.out.println(pnc(4,3));
}
输出:
24
代码:
public static void pnc(){
long pnc = 0;
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
for(int k=1;k<=4;k++){
if(i!=j && i!=k && j!=k){
pnc++;
int num = i*100+j*10+k;
System.out.print(num + " ");
}
}
}
}
System.out.println("\n" + "Permutations and Combinations: "+ pnc );
}
if代码块可以用Stringbuffer写
if(i!=j && i!=k && j!=k){
pnc++;
StringBuffer num = new StringBuffer();
num.append(i);
num.append(j);
num.append(k);
num.append(" ");
System.out.print(num);
}
测试:
public static void main(String args[]){
pnc();
}
输出:
123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432
Permutations and Combinations: 24