读书人

彩球分配有关问题:共有12个彩球4个

发布时间: 2012-11-23 00:03:43 作者: rapoo

彩球分配问题:共有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;}


读书人网 >编程

热点推荐