zoukankan      html  css  js  c++  java
  • 穷举法应用——搬砖块

    一、问题描述

    某工地需要搬运砖块,已知男人一人搬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
    ",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
    ",men,women,child);
            }
        
                        
        return 0;

  • 相关阅读:
    PHP-配置方法
    正则表达式-基础使用整理
    SEO-长尾词与分词技术
    SEO-站外优化规范
    SEO-站内优化规范
    SEO-友情链接注意事项
    java netty之ServerBootstrap的启动
    [curator] Netflix Curator 使用
    Netty5.x中新增和值得注意的点
    带连接池的netty客户端核心功能实现剖解
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/6657272.html
Copyright © 2011-2022 走看看