文档介绍:面试常见智力题解答
常见题目列表:
海盗分金问题
Des个数
1/7,2/7,4/7,第一天给1/7,第二天拿2/7换1/7………………
猴子搬香蕉问题
Description:
一个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多搬50根香蕉,每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
猴子搬香蕉问题
Solution:
猜测+验证
猜测:
设小猴从0走到50,到A点时候他可以直接抱香蕉回家了,可是到A点时候他至少消耗了3A的香蕉(到A,回0,到A),一个限制就是小猴只能抱50只香蕉,-3A=49,所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16.
验证:
以上为最优情形,只需验证这种情形可以到达即可
飞机加油问题
Description:
每个飞机只有一个油箱, 飞机之间可以相互加油〔注意是相互,没有加油机〕 一箱油可供一架飞机绕地球飞半圈。为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?〔所有飞机从同一机场起飞,而且必须平安返回机场,不允许中途降落,中间没有飞机场〕
飞机加油问题
Solution:
猜测+验证
猜测:
至少需要出动5 架飞机。思路是这样的,一架飞机要想完成绕地球一周的飞行,至少需要别的飞机给它提供1 箱油。最划算的方法显然是,派飞机和它结伴飞行前四分之一周以及后四分之一周,〔因为这两段路程距离基地近所花代价小。〕由它独立飞行中间的半程。必须保证两个加油点,前四分之一处,加满,后四分之一点,及时补充。那么必须有两架飞机与目标机结伴飞行四分之一周,这两架飞机需要做折返飞行,正好花费2 箱油。所以补充油的任务实际上该由另外两架飞机完成。这两架飞机飞八分之一周,做折返飞,正好充裕1 箱油。因此,5 架飞机刚好完成任务。到了此时,问题只考虑了一半。能够提供多少油并不意味着就能够全部接受,受到结伴飞行的距离,即腾出的油箱空间所限制。而以下做法正好可以满足此条件。
飞机加油问题
Solution:
验证:
3 架飞机同时从机场出发,飞行八分之一周,各耗油四分之一。此时某架飞机给其余两架补满油,自己返回基地。另一机和目标机结伴,飞至四分之一周,给目标机补满油,自己返回。目标机单独飞行半周,与从基地反向出发的一机相遇,2 机将油平分,飞至最后八分之一处,与从基地反向出发的另一机相遇,各分四分之一油,返回。
硬币游戏
Description:
16个硬币,A和B轮流拿走一些,每次拿走的个数只能是1,2,4中的一个数。谁最后拿硬币谁输。问:A或B有无策略保证自己赢?
硬币游戏
Solution:
博弈类问题,分清两概念
必胜态:有一种方法导致下一状态为必败态
必败态:每一种方法导致下一状态为必胜态
解决方法:递推
1:必败
2:必胜:取1,导致变为1状态(必败)
3:必胜:取2->必败态
4:必败:取1或2或4均导致必败态或直接失败
以些类推知16为必败态,即后手必胜
硬币游戏
Solution(Ⅱ):
剩2个时,取1个必胜;剩3个时,取2个必胜;剩4个时,如果对手足够聪明那么必败;剩5个时,去1个必胜...记作 2(1) 3(2) 4(x) 5(1) 6(2) 7(x) 8(1) ...从中找出规律:当剩余个数K=3N-2,N为自然数时,只要对手足够聪明那么必败.当K=3N-1时,有必胜策略: 取1个;当K=3N时,有必胜策略:取2个;所以,当16个时,后取者有必胜策略.
倒水问题
经典形式:
“假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为 5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。〞
倒水问题
Solution:
形式化倒水问题:无穷多水,容量a,b(a<=b)的水壶倒出c(c<=b)升水。
结论:c%gcd(a,b) == 0 时有解,可用扩展的Euclid定理加以证明:即存在整数x,y,使得ax+by=gcd(a,b).
倒水问题
Solution:
通用解法:(容量A,B的水壶倒C升水)
int t = 0;
while(t != c){
Do(fill A),Do(pour A B);
t = t+A;
if(t >= B){
t = t – B;
Do(empty B), Do(pour A B);
}
}
倒水问题
此题解答(5,6->3)
Oper a b