黑马程序员技术交流社区

标题: 小程序,写出你最简代码。。。 [打印本页]

作者: 曾翀    时间: 2014-7-31 14:15
标题: 小程序,写出你最简代码。。。

28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)
class lianxi
{
public static void main(String[] args)
   {        
        PingZinum(28);
         PingZinum(50);
    }
  public static void PingZinum(int x)
    {
        int y;   // x是喝水人数,y是瓶子数;
        y=(2*x+2)/3;
         System.out.println(y);        
    }
}
物理有能量守恒,动量守恒
这个题。。。却是瓶盖数量守恒。。。
因为一个瓶子三个瓶盖 所以瓶盖是3y;因为n个人喝水人数最后有n瓶没有瓶盖的瓶子和n个人中手上最多2个瓶盖。。。。所以得不等式3y<=2n+2  化简的y<=(2*x+2)/3;
作者: fantacyleo    时间: 2014-7-31 14:30
这帖子昨晚不是发过了么。。。
作者: baiiiu    时间: 2014-7-31 14:38
这个题是数学题么?
作者: jwx555    时间: 2014-7-31 14:44
baiiiu 发表于 2014-7-31 14:38
这个题是数学题么?

不,这个是入学考试题目,刚好我抽到过
希望楼主不是投机取巧,想要在这里得到答案

作者: fantacyleo    时间: 2014-7-31 14:51
jwx555 发表于 2014-7-31 14:44
不,这个是入学考试题目,刚好我抽到过
希望楼主不是投机取巧,想要在这里得到答案
...

求答案的多了,前段时间还有人直接征集题库想一网打尽。。。楼主挺好的,有自己的思考,虽然他的公式不正确。。。
作者: fantacyleo    时间: 2014-7-31 15:19
本帖最后由 fantacyleo 于 2014-7-31 15:20 编辑

其实很简单,没必要想太多。一开始0瓶,0盖子。轮到每个人时,如果盖子数是3个,就拿3个盖子换一瓶,盖子数变成1(3个换一瓶,减3,但换来的一瓶又自带盖子,加1,最后是剩1个盖子),否则就买一瓶,盖子数+1。思路有了,程序就自然而然了:
  1. public int getBottles(int n) {
  2.     int bottle = 0;
  3.     int cap = 0;
  4.     for (i = 1; i <= n; i++) {
  5.         if (cap < 3) {
  6.             bottle ++;
  7.             cap++;
  8.         }
  9.         else
  10.             cap = 1;
  11.     }
  12.     return bottle;
  13. }
复制代码

作者: Imp_x    时间: 2014-9-1 20:43
fantacyleo 发表于 2014-7-31 15:19
其实很简单,没必要想太多。一开始0瓶,0盖子。轮到每个人时,如果盖子数是3个,就拿3个盖子换一瓶,盖子数 ...

用你的代码放了15进去  输出11   = = 可是15个人明明买10瓶可乐就够了{:3_66:}
作者: fantacyleo    时间: 2014-9-1 21:08
Imp_x 发表于 2014-9-1 20:43
用你的代码放了15进去  输出11   = = 可是15个人明明买10瓶可乐就够了

又是借瓶盖?
作者: Imp_x    时间: 2014-9-1 21:38
fantacyleo 发表于 2014-9-1 21:08
又是借瓶盖?

明显啊- -公务员行测题、高考试题都是15人买10瓶
作者: fantacyleo    时间: 2014-9-1 21:54
Imp_x 发表于 2014-9-1 21:38
明显啊- -公务员行测题、高考试题都是15人买10瓶

高考题?我读书少,你可别骗我。 还是那个问题,能借一个,为什么不能借2个、3个?别说什么能还得上,我回复过你了,“还”那套说辞不成立
作者: Imp_x    时间: 2014-9-1 22:35
fantacyleo 发表于 2014-9-1 21:54
高考题?我读书少,你可别骗我。 还是那个问题,能借一个,为什么不能借2个、3个?别说什么能还得上,我 ...

就拿10瓶来说:
10瓶子换完3可乐还剩下1空瓶;
3可乐喝完还剩下4空瓶,3个再换1可乐,还剩下1可乐1空瓶;
也就是说喝完了10+3+1=14瓶可乐后,还剩下2空瓶;
既然多出2空瓶,为什么不能向别人接一个空瓶继续换一瓶可乐,喝完把空瓶还他就好,有借有还,刚好没有空瓶,不造成浪费。至于你说借2、3个,你能还么?你的瓶子都不是归零,而是变负了。
还有,哪里说明了“还”这套说辞不成立?你去商店别人搞活动买一送一,你跟你基友各只看上一件,你们不能合伙买?买满100优惠10块,你跟路人各自只买了50元,不会一起结账合伙每人45?这不是生活简单的问题答案?说辞哪里说明不成立
作者: fantacyleo    时间: 2014-9-1 22:47
Imp_x 发表于 2014-9-1 22:35
就拿10瓶来说:
10瓶子换完3可乐还剩下1空瓶;
3可乐喝完还剩下4空瓶,3个再换1可乐,还剩下1可乐1空瓶; ...

哦,搞错了,是昨天回复另一个人的,不过都是针对借瓶盖的思路,见:http://bbs.itheima.com/forum.php ... mp;page=1#pid958085




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2