摘要: 昨天去蘑菇街面试被虐, 其中智力题更是一点想法也没有, 真是觉得太丢人了...今天google了一下这道题, 解法有好几种, 仔细思考了一下其实这道题还是很有意思的.面试官提出的问题大概是这样:有100瓶水, 其中有1瓶有毒, 有5只狗, 如果狗喝了有毒的水, 则5小时后会毒发身亡. 问如何尽可能快地找出有毒的那一瓶水?思考1) 首先, 这里应该有一个隐含的条件, 面试官当时没有直接说, 我猜可能是希望应聘者主动询问的吧: 这里狗尝一瓶水的时间应该是忽略不计的; 由此推论, 狗连续不断地尝若干瓶水的时间也应该是忽略不计的. 这样设定, 后面的分析才比较简洁.2) 这里的策略有好几种, 但是能否 阅读全文
posted @ 2014-03-04 15:05 shenmeyisi 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 1)使用加法a = a + bb = a - ba = a - b2)使用异或运算a = a ^ b此时, a的位模式指示了a,b在那些位上是相同的(为0的那些位), 哪些位上是不同的(为1的那些). 而我们仍持有b的值, 所以a,b的值我们都还是知道的.b = a ^ b因为: 0不论和什么值异或, 结果都是那个值; 1不论和什么值异或, 其值都是那个值取反. 上一步后, a已经指示了a,b每个位的差异, 所以, 这一步是保留b中和1一样的位(这些位在现在的a中是0), 而将和a不同的位取反(这些位在现在的a中是1). 这步过后, b就被赋予原来a的值.a = a ^ b同理, 上一步后b已 阅读全文
posted @ 2014-03-04 13:36 shenmeyisi 阅读(259) 评论(0) 推荐(0) 编辑