共有n+m+k个球,
把所有可能列出来,假设每个球都不一样,所以有(n+m+k)! 种排列。
红球的顺序为n!,黄球的顺序为m!,蓝球的顺序为k!。
因为三种球除颜色外无区别,所以(n+m+k)!/(n!×m!×k!)即为所求。
代码为:
public class Main {
/**
* 求阶乘
*
* @param n
* @return
*/
public static int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorial(n - 1);
}
/**
* 求排列次数
*
* @param n
* @param m
* @param k
* @return
*/
public static int arrange(int n, int m, int k) {
return factorial(n + m + k) / (factorial(n) * factorial(m) * factorial(k));
}
public static void main(String[] args) {
// 各种颜色的球各一个共有6种排列方式
System.out.println(arrange(1, 1, 1));
}
}