`
googya
  • 浏览: 140540 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

2个空瓶换一瓶汽水问题

 
阅读更多
        1块钱可以买一瓶汽水,两个瓶可以换1瓶汽水,那么20可以喝到多少瓶汽水?
很简单、但是很容易出错的一个问题。事实上,关键是最后一步,你手中只剩下一个空瓶,这个瓶子你可以给老板,并且再向他索要一瓶汽水,喝完之后,将空瓶给他。


引用
这个本来不应该发到论坛中来(仅仅是自己参考用的)。只是不小心发错了,发上来了。希望大家不要见怪,只当是一个脑筋急转弯吧,活跃一下思维而已。程序员嘛,也不应该太较真,是不是。希望大家原谅我这次。          




         以下是这个问题的Ruby实现:
def sum_bottles(money)
    sum=left_bottle=money
    single_one=0#单瓶子的个数
    while(left_bottle!=1)
        if(left_bottle%2!=0)
            single_one=1
            left_bottle=(left_bottle-1)/2
            sum+=left_bottle
        else
            single_one=0
            left_bottle=left_bottle/2
            sum+=left_bottle
        end
        left_bottle+=single_one
    end
    sum+1#注意要加上这个,最后还可以得到一瓶
end
money=30
p sum_bottles(money)




下面是个简化版本:
def sum_bottles(money)
    sum=left_bottle=money
    single_one=0
    while(left_bottle!=1)
        left_bottle%2!=0?single_one=1:single_one=0
        left_bottle=(left_bottle-single_one)/2
        sum+=left_bottle
        left_bottle+=single_one
    end
    sum+1
end
money=120
p sum_bottles(money)

分享到:
评论
4 楼 googya 2010-06-13  
    这个本来不应该发到论坛中来(仅仅是自己参考用的)。只是不小心发错了,发到论坛上来了。希望大家不要见怪,只当是一个脑经急转弯吧,活跃一下思维而已。我觉得程序员嘛,也不应该太较真,是不是。希望大家原谅我这次。           
3 楼 googya 2010-06-13  
Illum 写道
引用
你手中只剩下一个空瓶,这个瓶子你可以给老板,并且再向他索要一瓶汽水,喝完之后,将空瓶给他。


这个是不符合严格逻辑的,如果事情可以这样,你永远可以买一块钱的汽水再加向老板索要一瓶然后还他两个空瓶。
等价于一块钱买两瓶汽水。
这个还需要复杂的算法么?

不错,也是,只是理论上有这样的可能性,实际中绝对办不到。如果仅从数学的角度看的话,一个空瓶的价值和一瓶水(不包括瓶)本身的价值是一样的。
2 楼 ray_linn 2010-06-13  
老板为什么要借你一个空瓶??? 这种脑筋急转弯的东西,不是能用逻辑的程序算出来的
1 楼 Illum 2010-06-13  
引用
你手中只剩下一个空瓶,这个瓶子你可以给老板,并且再向他索要一瓶汽水,喝完之后,将空瓶给他。


这个是不符合严格逻辑的,如果事情可以这样,你永远可以买一块钱的汽水再加向老板索要一瓶然后还他两个空瓶。
等价于一块钱买两瓶汽水。
这个还需要复杂的算法么?

相关推荐

Global site tag (gtag.js) - Google Analytics