穷举法应用——搬砖块
一、问题描述
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块。有多少种搬法用45人正好搬45块砖?
二、问题分析
这是一个组合问题,由三个因素决定组合的数量:男人,女人,小孩的人数,取值范围均为0~45,总人数之和为45人。对于每类人数的取值都要反复地试,最后确定正好满足45人搬45块砖的组合。可以用循环来解决,三类人数按照各自的取值范围循环,可以采用三重循环嵌套。
三、程序实现
int child,men,women; for(men=0;men<=45;men++) for(women=0;women<=45;women++) for(child=0;child<=45;child++) if(men+women+child==45&&men*3+women*2+child*0.5==45) printf("men=%d,women=%d,child=%d\n",men,women,child); return 0;
四、程序改进
由于最多只有45块砖,男人的数量不会超过15人,女人的数量不会超过22人,一旦男人和女人的数量确定下来后,小孩的人数应该是==45-男人数-女人数。
int child,men,women; for(men=0;men<=15;men++) for(women=0;women<=22;women++){ child=45-women-men; if(men*3+women*2+child*0.5==45) printf("men=%d,women=%d,child=%d\n",men,women,child); } return 0;
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子里和园子外的大大们指正错误,共同进步。或者直接私信我 (^∀^)
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
本博客的所有打赏均将用于博主女朋友的化妆品购买以及养肥计划O(∩_∩)O。我是【~不会飞的章鱼~】!