彩球分配问题:共有12个彩球,4个红的,4个白的,4个黄的,从中挑出8个球放入3个不同的口袋(口袋编号分别为a、b、c)编写程序打印输出所有可能的放法。

共有12个彩球,4个红的,4个白的,4个黄的,从中挑出8个球放入3个不同的口袋(口袋编号分别为a、b、c)编写程序打印输出所有可能的放法。

以下是和别人讨论得出的程序,感觉还有很大的优化空间,大家可以把自己的代码贴上来一起分享。

#include <stdio.h>
int main()
{
	int honga,baia,huanga,hongb,baib,huangb,hongc,baic,huangc,sum=0;
	int a,b,c;
	for(a=0;a<=8;a++)
	{
		for(b=0;b<=8;b++)
		{
			c=8-a-b;
			if(c>=0) //用if来满足是否红白黄满足8个球球
			{ 
				for(honga=0;honga<=4;honga++)
				{
					for(baia=0;baia<=4;baia++)
					{
						for(huanga=0;huanga<=4;huanga++)
						{
							if(honga+baia+huanga==a) //用if来满足是否红白黄满足8个球球
							{
								for(hongb=0;hongb<=4;hongb++)
								{
									for(baib=0;baib<=4;baib++)
									{
										for(huangb=0;huangb<=4;huangb++)
											if(hongb+baib+huangb==b)
											{
												for(hongc=0;hongc<=4;hongc++)
												{
													for(baic=0;baic<=4;baic++)
													{
														for(huangc=0;huangc<=4;huangc++)
															if(hongc+baic+huangc==c)
															{
																printf("a口袋红球:%d+白球:%d+黄球:%d  b口袋红球:%d+白球:%d+黄球:%d  b口袋红球:%d+白球:%d+黄球:%d\n",honga,baia,huanga,hongb,baib,huangb,hongc,baic,huangc);
																sum++;
															}
													}
												}
											}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	printf("sum:%d\n",sum);
	getch();
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值