您的位置:首页 > 其它

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

2012-11-12 19:10 1021 查看
共有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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐