窮舉法應用——搬磚塊


一、問題描述

某工地需要搬運磚塊,已知男人一人搬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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM