口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举、gcc编译)

1.题目

口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举)

2.代码

#include <stdio.h>

void main()
{
	enum color {red,yellow,blue,white,black};
	enum color i, j, k, pri;
	int n = 0, loop;

	for(i=red;i<=black;i++)
		for(j=red;j<=black;j++)
			if (i != j)
			{
				for (k = red; k <= black; k++)
				{
					if ((k != i) && (k != j))
					{
						n = n + 1;
						printf("%-4d", n);
						for (loop = 1; loop <= 3; loop++)
						{
							switch (loop)
							{
								case 1:pri = i; break;
								case 2:pri = j; break;
								case 3:pri = k; break;
								default:break;
							}

							switch (pri)
							{
								case red:printf("%-10s", "red"); break;
								case yellow:printf("%-10s", "yellow"); break;
								case blue:printf("%-10s", "blue"); break;
								case white:printf("%-10s", "white"); break;
								case black:printf("%-10s", "black"); break;
								default:break;
							}
	
三色题是一个经典的组合题,考虑从颜色中选取同组合情况。既然你要的是所有的颜色搭配,这里有三种颜色: 1. 全部是红色:有 C(3,8) 种选择,其中 C(n,k) 表示从 n 个同元素中取 k 个元素的组合数,计算公式是 `n! / (k!(n-k)!)`。 2. 全部是白色:同理,也有 C(3,8) 种。 3. 全部是黑色:同样,有 C(6,8) 种。 4. 红白组合:先选3个红3个白,然后从剩下的9个(6黑3白)中选5个,有 C(3,3) * C(6,5) 种。 5. 红黑组合:同理,先选3个红,再选6个黑,有 C(3,3) * C(6,6) 种(由于6个黑必选,所以只需选3个红)。 6. 白黑组合:类似地,先选3个白,再选5个黑,有 C(3,3) * C(6,5) 种。 至于Java代码来生成这些组合,可以使用递归或者循环遍历,但这需要生成大量的组合数据并存储,实际操作上可能太适合直接打印出来。如果你想要程序统计总数,可以编写递归函数来计算组合数,然后相加得到总的搭配种类。这里我简化说明一下思路: ```java import java.util.ArrayList; public class ColorCombination { // 计算组合数的辅助方法 static int combinations(int n, int r) { if (r == 0 || r == n) return 1; else return combinations(n - 1, r - 1) + combinations(n - 1, r); } public static void main(String[] args) { int red = 3, white = 3, black = 6; int totalCombinations = combinations(red, 0) + combinations(white, 0) + combinations(black, 0) + combinations(red, 3) * combinations(white, 3) * combinations(black, 5) + combinations(red, 3) * combinations(black, 6) + combinations(white, 3) * combinations(black, 5); System.out.println("总的颜色搭配组合数: " + totalCombinations); } } ``` 请注意,这个例子假设了每次都会取到对应颜色的全部,实际上随机抽取可能会恰好都是3个或6个。如果需要模拟随机抽取,那将涉及到概率和随机数生成,而是简单的组合数学计算。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值