V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
lili1397
V2EX  ›  奇思妙想

一道脑洞大开的计算问题

  •  
  •   lili1397 · 2021-01-29 14:54:11 +08:00 via iPhone · 1874 次点击
    这是一个创建于 1422 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个小店做活动,啤酒促销。
    啤酒一瓶一块钱,两个空瓶可以再换一瓶。
    问题:假如你特能喝,5 块钱喝到最后,能喝几瓶?
    如果你还在扳手指头,那 10 块呢,最终能喝几瓶?

    通常我们用这样的问题,来训练左脑的逻辑思维。
    如果你会写代码,应该会觉得题目很简单,一个 function 搞定。
    4 条回复    2021-02-01 15:59:57 +08:00
    teddyss
        1
    teddyss  
       2021-01-30 10:34:51 +08:00   ❤️ 1
    private static int num=0; //可以喝的啤酒数
    private static int pingzi=0;//瓶子数

    public static void main(String[] args) {
    // Scanner scanner = new Scanner(System.in);
    // System.out.println("要买多少钱的?");
    // int money = scanner.nextInt();
    int money = 2;
    System.out.println(money+"元可以喝"+calc(money)+"瓶啤酒");
    }

    private static int calc(int money){
    if(money > 0){
    money--; // 买一瓶钱就要减去 1 元
    num++; // 得到的啤酒数加 1
    pingzi++; // 得到的瓶子数加 1
    if(pingzi==2){ // 如果瓶子数等于 2 的话,可以多兑换一瓶,兑换之后还多了一个瓶子
    num++; pingzi=1;
    }
    calc(money); //递归计算
    }
    return num;
    }
    cookii
        2
    cookii  
       2021-02-01 10:53:15 +08:00
    2n-1
    no1xsyzy
        3
    no1xsyzy  
       2021-02-01 14:08:43 +08:00
    话说以前那个可以借一个空瓶还一个空瓶的话就是简单代数问题:
    2 * 空瓶 = 1 净重 * 水 + 1 * 空瓶 = 1 RMB
    1 净重 * 水 = 0.5 RMB

    不能借瓶子的话其实是个动规问题,但猜想可能有解析解。
    lili1397
        4
    lili1397  
    OP
       2021-02-01 15:59:57 +08:00 via iPhone
    条条道路通罗马,每个人的思考路径都很独特。
    这个问题跟那个著名的 1+2+3+....+100=?
    属于一类,找到规律就好办了。
    小学,初中以下,正确解答大约需要三分钟。
    心算,通常会陷入一种奇妙的循环。打个草稿的话,会快很多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2620 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.