算法_数学问题_Question10_马克思手稿中的数学(java实现)

这篇文章讲述的是算法初级部分的马克思手稿中的数学问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

马克思手稿中有一道趣味数学问题:有30个人,其中男人、女人和小孩,他们在同一家饭馆吃饭,总共花费了50先令。已知每个男人吃饭需要花3先令,每个女人吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人。

算法分析

假设男人有man个人,女人有woman个人,小孩有child个人,满足以下条件
man+woman+child==30
3*man+2*moman+child*1==50
确定取值范围 man:0~16
woman:0~25
child:0~50
只需使用两层循环判定所满足条件即可

代码实现

package mathematics;

public class Q10_MarxManuscript {
    /**
     * 问题描述:马克思手稿中有一道趣味数学问题:有30个人,其中男人、女人和小孩,他们在
     *          同一家饭馆吃饭,总共花费了50先令。已知每个男人吃饭需要花3先令,每个女人
     *          吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各
     *          有几人。
     * 
     * 算法分析:假设男人有man个人,女人有woman个人,小孩有child个人,满足以下条件
     *                          man+woman+child==30
     *                          3*man+2*moman+child*1==50
     *          确定取值范围      man:0~16
     *                          woman:0~25
     *                          child:0~50
     *          只需使用两层循环判定所满足条件即可
     */
    public static void main(String[] args) {
        /*初始化人数*/
        int man , woman ,child ;
        System.out.println("满足条件的情况有:");
        int num = 0;
        /*循环判定男人、女人、小孩是否满足条件,穷举*/
        for(man=0 ; man<=16 ; man++)
            for(woman=0 ; woman<=25 ;woman++){
                child = 30-man-woman ;
                if(3*man+2*woman+1*child == 50){
                    /*输出满足条件的结果*/
                    System.out.println("男人:"+man+" 女人"+woman+" 小孩:"+child);
                    num++ ;
                }
            }
        System.out.println("共"+num+"种");
    }
}

样例输出

满足条件的情况有:
男人:0 女人20 小孩:10
男人:1 女人18 小孩:11
男人:2 女人16 小孩:12
男人:3 女人14 小孩:13
男人:4 女人12 小孩:14
男人:5 女人10 小孩:15
男人:6 女人8 小孩:16
男人:7 女人6 小孩:17
男人:8 女人4 小孩:18
男人:9 女人2 小孩:19
男人:10 女人0 小孩:20
共11种
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值