A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡建伟 中级黑马   /  2014-3-10 23:17  /  852 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡建伟 于 2014-3-11 12:34 编辑

      有若干个面包和盘子,假如有10个面包,一个盘子只能装2个,则需要5个盘子才能装下,
如果面包为11个时候,则需要6个盘子。
      请不用判断语句,if或while情况下,如何用java程序实现面包需要多少个盘子?
      昨天没对题意说清楚,是在面包数m和每个盘子装几个n,两者都不确定情况下,如何编程实现盘子数0?
     (提示:m%n=0时,盘子数o=m/n;m%n=!0时,盘子数o=m/n+1,但是要求不用判断,这就很矛盾了,该怎么办呢)

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

6 个回复

倒序浏览
这样行不行:
public class Test {

        public static void main(String[] args) {
                count(43);
        }
        public static void count(int breadNum){
                int pan=(breadNum+1)/2;
                System.out.println(breadNum+"个面包需要"+pan+"个盘子");
        }
运行结果为:43个面包需要22个盘子
只是在面包数上加1再除以2,刚好可以避开条件判断。
}
回复 使用道具 举报
上面格式有点问题,这样:
public class Test {

        public static void main(String[] args) {
                count(43);
                count(42);
        }
        public static void count(int breadNum){
                int pan=(breadNum+1)/2;
                System.out.println(breadNum+"个面包需要"+pan+"个盘子");
        }
}
运行结果为:43个面包需要22个盘子
                  42个面包需要21个盘子
在面包数上加1再除以2,运算结果刚好可以避开条件判断。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
zengming13 发表于 2014-3-11 08:44
另一种方式也许更容易想到:
盘子数=面包数/2 + 面包数%2

呵呵,这个答案确实不错
回复 使用道具 举报
zengming13 发表于 2014-3-11 08:44
另一种方式也许更容易想到:
盘子数=面包数/2 + 面包数%2

盘子数=面包数/2 + 面包数%2 这个不满足所有情况啊!
比如10个面包,每个盘子放4个面包,需要3个盘子就ok,可按上面公式计算:10/4+10%4=4
回复 使用道具 举报
chen_x 发表于 2014-3-10 23:44
上面格式有点问题,这样:
public class Test {

这属于特殊情况了,当面包数为43,每个盘子放5个面包时候,需要9个盘子;如果加1再除以2得22,这不不对了嘛,再想想
回复 使用道具 举报
chen_x 中级黑马 2014-3-11 13:10:53
7#
胡建伟 发表于 2014-3-11 12:28
这属于特殊情况了,当面包数为43,每个盘子放5个面包时候,需要9个盘子;如果加1再除以2得22,这不不对了 ...

每个盘子5个面包的话,可以(breadNum+4)/5, 这样算的话,40个面包需要8个盘子,41~45个面包都是需要9个盘子,46个面包时就需要10个盘子,与实际相符。
每个盘子n个面包时,盘子数就是(breadNum+n-1)/n
这个公式应该是没错的,用数学方法可以递推证明下:每个盘子最多n个面包,面包数所有可能的情况就是kn,kn+1,kn+2,.....,kn+n-1, 其中k为所有正整数,这些情况中只有kn时是需要k个盘子,其它都是需要k+1个盘子
按公式(breadNum+n-1)/n计算,你可以大致推算一下,也是这个结果的,只有第一个面包数为kn时,运算结果是k, 其它kn+1,...,kn+n-1运算结果都是k+1。
说得有点多~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马