java代码写一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?
时间: 2023-10-09 20:16:15 浏览: 112
五种不同色小球中选三种不同色小球的选法
4星 · 用户满意度95%
这道题可以使用组合数的思想来解决。首先,我们需要求出从中任取8个球的方案数,然后再分别计算其中恰好3个、恰好2个和恰好1个红球的方案数,最后将它们加起来即可。
具体地,从12个球中任取8个的方案数为:
```
C(12, 8) = 12! / (8! * 4!) = 495
```
其中,C(n, m)表示从n个不同元素中取出m个元素的组合数。
接下来,计算恰好3个红球的方案数。由于必须选3个红球,所以还需要从9个球中任选5个,这样可以保证选出的8个球中恰好有3个红球。那么,恰好3个红球的方案数为:
```
C(3, 3) * C(9, 5) = 1 * 126 = 126
```
其中,C(3, 3)表示从3个红球中选出3个红球的组合数,C(9, 5)表示从9个非红球中选出5个球的组合数。
类似地,恰好2个红球的方案数为:
```
C(3, 2) * C(9, 6) = 3 * 84 = 252
```
恰好1个红球的方案数为:
```
C(3, 1) * C(9, 7) = 3 * 36 = 108
```
最终,将它们加起来,得到共有486种可能的颜色搭配。下面是Java代码实现:
```java
public class BallCombination {
public static void main(String[] args) {
int red = 3;
int white = 3;
int black = 6;
int total = red + white + black;
int n = 8; // 从中任取8个球
int combinations = combination(total, n);
int c1 = combination(red, 3) * combination(total - red, n - 3);
int c2 = combination(red, 2) * combination(total - red, n - 2);
int c3 = combination(red, 1) * combination(total - red, n - 1);
int result = c1 + c2 + c3;
System.out.println("共有" + result + "种可能的颜色搭配。");
}
// 计算组合数C(n, m)
private static int combination(int n, int m) {
int numerator = 1;
int denominator = 1;
for (int i = 0; i < m; i++) {
numerator *= (n - i);
denominator *= (i + 1);
}
return numerator / denominator;
}
}
```
阅读全文