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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾翀 中级黑马   /  2014-7-30 21:09  /  8237 人查看  /  118 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)
class lianxi
{
public static void main(String[] args)
   {       
        PingZinum(28);
    }
  public static void PingZinum(int x)
    {
        int y;   // x是喝水人数,y是瓶子数;
        y=(2*x+2)/3;
         System.out.print(y);       
    }
}
物理有能量守恒,动量守恒
这个题。。。却是瓶盖数量守恒。。。
因为一个瓶子三个瓶盖 所以瓶盖是3y;因为n个人喝水人数最后有n瓶没有瓶盖的瓶子和n个人中手上最多2个瓶盖。。。。所以得不等式3y<=2n+2  化简的y<=(2*x+2)/3;   

小伙伴写出你们的代码:lol

118 个回复

倒序浏览
不明觉厉

点评

怎么不明觉厉了啊  发表于 2014-7-31 14:39
回复 使用道具 举报
楼主逻辑很犀利
回复 使用道具 举报
  1. /*10、 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?

  2. *    假如是50人,又需要买多少瓶可乐?(需写出分析思路)
  3. *
  4. *分析:每买一瓶可乐产生一个瓶盖和一个瓶子,
  5. *     
  6. *      三个瓶盖可以换一个瓶盖和一个瓶子,
  7. *      
  8. *      当瓶子数等于人数时,终止购买,返回此时买的可乐数。
  9. *
  10. */
  11. package com.itheima;

  12. public class Test10 {
  13.        
  14.         public static void main(String[] args) {
  15.                  
  16.                
  17.                
  18.                 System.out.println(getBottle(28));             //28人时需要购买的可乐数
  19.                
  20.                 System.out.println(getBottle(6));              //50人时需要购买的可乐数
  21.                
  22.                

  23.         }
  24.         public static int  getBottle(int person)
  25.         {
  26.             int bottlecap = 0;                         //设置开始瓶盖数     
  27.                            
  28.             int  bottle = 0;                           //设置开始瓶子数
  29.                            
  30.             int buycoco = 0;                           //设置买可乐数
  31.             
  32.             while(bottle < person)                     //设置循环条件
  33.             {
  34.                     buycoco++;                             //开始买可乐
  35.                    
  36.                     bottlecap= bottlecap+1;                //一瓶可乐增加一个瓶盖
  37.                    
  38.                     bottle = bottle +1;                    //一瓶可乐增加一个瓶子
  39.                    
  40.                     if(bottlecap==3)                       //三个瓶盖兑换一瓶可乐
  41.                     {
  42.                            
  43.                             bottlecap = 1;                      //瓶盖变成一个
  44.                    
  45.                             bottle = bottle +1;                 //瓶子增加一个
  46.                     }
  47.              }
  48.             return buycoco;                             //返回买的可乐数
  49.         }

  50. }
复制代码

点评

这个才叫逻辑啊, 楼主代码的,分析好烂  发表于 2014-8-6 08:07
这个才叫逻辑啊, 楼主只能说是算法罢了.  发表于 2014-7-31 18:48
回复 使用道具 举报 2 0
还是楼主代码简单 佩服佩服!!

点评

我是代码是不是错了,他们都说看不懂,或者不明觉厉。。。好怕怕啊  发表于 2014-7-31 13:30
回复 使用道具 举报
本帖最后由 hejinzhong 于 2014-7-31 18:56 编辑


(1)如果只要有盖子就可以换,那就是这样来写
2个人先买2瓶,将盖子给第3人,第三人即可免费喝一瓶了(先拿一瓶,他就有3盖子,不用付钱了)
(50/3)*2+50%3
即3人抱团,落单自理

  1. class XXX
  2. {
  3. public static void main(String[] args)
  4. {
  5.   func(50);
  6. }
  7. public static void func(int num)
  8. {
  9.   System.out.println((num/3)*2+num%3);
  10. }
  11. }
复制代码
(2)这个我想的是一次买完,当场兑换一次,若考虑综合利用就不行。
只要在人数中,4人抱团买3瓶即可解决,没有团队的 自己买,所以结果是:(50/4)x3+50%4
50/4是能最多组成的队伍个数,一个队伍买3瓶
50%4 就是没队伍的,自己解决。
回复 使用道具 举报 4 0
求告知,插入代码能保证我的格式呢?
回复 使用道具 举报
算法的力量!

点评

请问是不是我代码有问题,还是怎么的。他们都说看不懂啊  发表于 2014-7-31 13:32
回复 使用道具 举报
这题我记得后来一般都可以借的吧,然后还一个。。。。还有一般来说不是三个瓶子换一个吗。。。
回复 使用道具 举报
hejinzhong 发表于 2014-7-31 06:15
只要在人数中,4人抱团买3瓶即可解决,没有团队的 自己买,所以结果是:(50/4)x3+50%4
50/4是能最多组成的 ...

简单明了
回复 使用道具 举报
@for 中级黑马 2014-7-31 14:09:41
11#
hejinzhong 发表于 2014-7-31 06:15
只要在人数中,4人抱团买3瓶即可解决,没有团队的 自己买,所以结果是:(50/4)x3+50%4
50/4是能最多组成的 ...

这个思路有点问题,。。
回复 使用道具 举报
@for 中级黑马 2014-7-31 14:13:21
12#
不得不赞一个。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
同意楼上,买3瓶换来的那只可乐也还有个瓶盖,在这上面思路中,换来的那个瓶盖没使用...
回复 使用道具 举报
icris 中级黑马 2014-7-31 14:17:34
14#
写程序跟做数学题是不一样的…他让打印从 1 加到 100 的结果难道你就打印 (1 + 100)*50 = 5050 吗…
回复 使用道具 举报

我看不懂怎么办,逻辑思维能力很差,学不好编程怎么办
回复 使用道具 举报
jthanyu 来自手机 初级黑马 2014-7-31 15:33:17
16#
逻辑能力都很强呀…
回复 使用道具 举报
liubea 发表于 2014-7-31 14:17
同意楼上,买3瓶换来的那只可乐也还有个瓶盖,在这上面思路中,换来的那个瓶盖没使用... ...

……4个人买3瓶,剩下组不到团的每人都得买一瓶……哪里有问题……逻辑很好的好吗?………………:L

点评

每组4个人买三瓶,每组都会多出一个瓶盖没有使用  发表于 2014-8-6 12:46
我也是这么想的,,,  发表于 2014-8-1 17:34
回复 使用道具 举报
开始玩数学题了,你的算法是对的,就是表达的欠缺点。比如一个瓶子三个瓶盖,这句话不是一看就能懂的。你得说三个瓶盖换一瓶可乐,那么也就是三个瓶盖换一个瓶身和一个瓶盖,因此一个瓶身也就抵两个瓶盖,因此一瓶可乐包括一个瓶身和一个瓶盖。也就相当于一个瓶子三个瓶盖。

点评

他的算法是错的,x=3时应该买3瓶,他的算法是2瓶  发表于 2014-7-31 16:18
回复 使用道具 举报
LFW 中级黑马 2014-7-31 16:14:38
19#
hejinzhong 发表于 2014-7-31 06:15
只要在人数中,4人抱团买3瓶即可解决,没有团队的 自己买,所以结果是:(50/4)x3+50%4
50/4是能最多组成的 ...

支持这个想法的跟我一起喊:V5。搞复杂了就没意义了
回复 使用道具 举报
LFW 中级黑马 2014-7-31 16:20:26
20#
LFW 发表于 2014-7-31 16:14
支持这个想法的跟我一起喊:V5。搞复杂了就没意义了

我又想了一下,不对,,4人成团买3支没有错,但是每12个人分成三组,买了9瓶,分别各组兑换一次刚好喝完,然后3组合并,用兑换的可乐又还能兑换一支。。。。:(不靠谱
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马