【绳子类】
1、 一条绳子(粗细不均,长短不一),从一头点燃,全部烧完要耗时1个小时,问如何用这条绳子测出半个小时?(初级)
2、 有一些绳子(粗细不均,长短不一),但是每根绳子点燃后都烧一个小时,问用什么方法可以用这些绳子计算45分钟的时间,计算1小时15分钟时间呢?(中级)
(分析)这类题目比较简单。由于绳子是双向的,只需同时点燃绳子的两端,便可得到1/2小时的时间,这种方法暗含着以一个绳子单向点燃时间作为参照物;同时点燃两根绳子,一根双向点燃,另一根单向点燃,待第一根绳子燃烧完毕后,点燃第二根绳子的另一端,便得到45分钟时间;同理,可计算1小时15分钟时间。
【作图类】
1、 十枚硬币排5排.每排4枚硬币,怎么排?(初级)
2、 五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆?(初级)
3、 排成3行3列的矩阵形式的九个点。如何用一笔划出4条直线,经过这所有九个点。(中级)
4、 在9个点上画10条线,要求每条线上至少有3个点,这9个点怎样排列?(中级)
(分析)这些题目往往需要不断地尝试和琢磨,才能做出来。一般需要借助特殊的图形(如问题1是五角星排列)或者打破平面常规(如问题2便需要立体考虑)。
【博弈类】
1、 假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?(中级)
2、 16个硬币,A和B轮流拿走一些,每次拿走的个数只能是1,2,4中的一个数。谁最后拿硬币谁输。问:A或B有无策略保证自己赢?假设都很聪明。(高级)
3、 传说,从前有五个海盗抢得了100枚金币.他们通过了一个如何确定选用谁的分配方案的安排.即:
1.抽签决定各人的号码(1,2,3,4,5);
2.先由1号提出分配方案,然后5个人表决.当且仅当超过半数人同意时,方案才算被通过,否则他将被扔入大海喂鲨鱼;
3.当1号死后,再由2号提方案,4个人表决,当且仅当超过半数同意时,方案才算通过,否则2号同样将被扔入大海喂鲨鱼;
4.往下依次类推……
根据上面的这个故事,现在提出如下的一个问题.即:
我们假定每个海盗都是很聪明的人,并且都能够很理智地判断自己的得失,从而做出最佳的选择,那么第一个海盗应当提出怎样的分配方案才能够使自己不被扔入大海喂鲨鱼,而且收益还能达到最大化呢?
(分析)博弈类的题目往往需要逆向思维考虑问题,这两道题目也不例外。
对于问题1,要确保自己能拿到最后一个球,应该在最后一轮(“一轮”定义为对方和自己依次取一次球)中剩余6个求,这样,对方拿x个,你拿剩下的6-x个便可以获胜,…,依次往前推,100个乒乓球可包含100/6=16轮,剩下100%6=4个。于是,可以得到答案:自己先取4个球,然后对方取x个,自己取6-x个,这样便可保证自己取到第100个球。
对于问题2,与问题1类似,需要针对A拿的硬币个数,确定B对应拿几个(假设B赢)。采用逆推的方法,最后必须剩余1个,且此时让A拿,倒数第二轮可剩余3个或者6个,这样,A拿1个,B对应拿2个;A拿2个,B对应拿1个;A拿4个,B对应拿2个,…,依次逆推,16个硬币最多进行16/3=5轮,最后正好剩余16%3=1个。
对于问题3,可参考:http://wenku.baidu.com/view/086e9ce8856a561252d36f4f.html
【倒水类】
1、 假设有一个池塘,里面有无穷多的水。现有2 个空水壶,容积分别为 5 升和6 升。问题是如何只用这2 个水壶从池塘里取得3 升的水?(初级)
2、 如果有无穷多的水,一个3公升的桶,一个5公升的桶,两只桶形状上下都不均匀,问你如何才能准确称出4公升的水?(初级)
3、 如上题,如果是7公升和11公升的桶,怎样准确量出2公升的水?(初级)
4、 有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒,只用这三个杯子怎么把酒平均的分给4个人喝?(中级)
(分析)形式化倒水问题:无穷多水,容量a,b(a<=b) 的水壶倒出c(c<=b) 升水。
结论:c%***(a,b) == 0 时有解,可用扩展的Euclid 定理加以证明:即存在整数x,y ,使得ax+by=***(a,b).
通用解法:( 容量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);
}
}
如问题1:
Oper a b t (A=5,B=6)
Fill A, Pour A B 0 5 5
Fill A, Pour A B 4 6 10
Empty B, Pour A B 0 4 4
Fill A, Pour A B 3 6 9
Empty B, Pour A B 0 3 3 (success)
【称重类】
5、 一共12 个一样的小球, 其中只有一个重量与其它不一样( 未知轻重) ,给你一个天平, 只称三次, 找出那个不同重量的球?(初级)
6、 如果一共13 个一样的小球, 其中只有一个重量与其它不一样( 未知轻重) ,给你一个天平, 只称三次, 找出那个不同重量的球?(高级)
5题解答:
首先要知道的就是, 如果3个球, 知道其中有一个球是偏重的, 那么称其中两个球就可以找出是哪个球,
有2种情况,
一,重量相同, 说明第3个球是重的
二,重量不同, 那么比较重的那个球是重的
如果知道3个球其中一个是轻的, 那按照上面的方法也能称一次就知道是哪个球
下面开始看题..
十二个球分成3组,每组4个,A组○○○○ B组○○○○ C组○○○○
一:AB两组比较,重的记为●●●● 轻的记为○○○○(相等的情况最后讨论) 那么C组的都是标准的重量记为★★★★
二:取●●●○与 ★★★●比较,有3种情况
1.●●●○> ★★★●
一定是左边的●●●有一个偏重,不会是右边偏轻.所以按一开始说的方法,在3个球里称出一个重的.
2.●●●○= ★★★●
那么不相等的球在○○○★中.用刚才的方法称出○○○中偏轻的那个
3.●●●○< ★★★●
那么是○偏轻,或者●偏重,取○和标准的比较,若重量不同,则○是轻球, 反之则●是重球
三:上面A=B的情况,AB都记为★★★★ ★★★★ ,C组记为○○○○
取○○○与★★★比较
1.○○○=★★★,则剩下的一个就是要找的球,与★比较得到轻重
2.○○○>★★★,左边3个球中称出重的球
3.○○○<★★★,左边3个球中称出轻的球
(答案与分析网上找)
【诡异类】
1、 2个盲人每人买了2双黑袜2双白袜,(每双袜子连在一起,)不小心吧这把8双袜子混在了一起,请问他俩怎样才能拿会自己的袜子?
2、 有23枚硬币在桌上,10枚正面朝上。假设别人蒙住你的眼睛,而你的手又摸不出硬币的反正面。让你用最好的方法把这些硬币分成两堆,每堆正面朝上的硬币个数相同(你可以随便翻转任何一枚硬币)。
3、 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却不知自己的。主持人先让大家看看别人头上戴的什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
4、 有3顶红帽子,4顶黑帽子,5顶白帽子。让10个人从矮到高站成一队,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面9个人头上帽子的颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。假设最前面那个人一定会知道自己戴的是黑帽子。为什么?
(分析)这类题目粗看摸不到头脑,感觉题目意思有点诡异的,但仔细分析问题后,便会得到结果。
对于问题1,每个盲人只需要拿走所有成双袜子中的一只即可。
对于问题2,只需将23枚硬币分成两组,一组10个,另一组13个,然后将10个的那组中所有硬币翻转即可。
对于问题3,可采用递推+联想的方法。首先,假设只有1个人戴黑帽子,则第一次熄灯时,便会出现清晰的打耳光的声音(你可以联想,N个人中,只有你一个人戴黑帽子,第一次熄灯之前,你看到其他所有人戴白帽子,你很容易想到只有自己戴黑帽子,那么熄灯后赶快给自己一个耳光,O(∩_∩)O~);然后,再假设有两个人戴黑帽子(设这两个人分别为A,B),第一次熄灯前,A或者B都看到对方戴黑帽子,熄灯后,他们均不会打自己,然而,第二次熄灯前,对于A,他想到上次B没有打自己,说明B看到了有人带黑帽子,而A,B看到的除自己以外所有人均是相同的,即均戴白帽子,则A想:B一定看到了自己戴黑帽子,同理,B也会这样想,于是第二次熄灯时,AB均会打自己,…,这样可以归纳,如果第n次熄灯后,出现打耳光的声音,则共有n个人戴黑帽子。
对于问题4,可参考:http://www.oursci.org/archive/magazine/200111/011111.htm
【最优化类】
1、 一个小猴子边上有100 根香蕉,它要走过50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
2、 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?
3、 有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。
(分析)这类题目需要根据具体情况,利用简单的数学知识进行解答。
对于问题1,由于猴子一次只能搬50根,则他需要在中途返回一趟,取剩下的香蕉。设猴子在中途x米处返回,则最优的情况是:在x米处需存储至少50根香蕉,然后义无反顾地回家(不再返回)。显然,(50-2x)+(50-x)>= 50,求得x<=16.6,则x取16,此时,猴子可带回家16根香蕉。
对于问题2,可采用递推的方法。20元钱,可买20瓶汽水,然后用这20个空瓶换10瓶汽水,之后用这10个空瓶换5瓶汽水,再之后用这5个空瓶换2瓶汽水,之后用这3个空瓶换1瓶汽水,然后用剩下的2个空瓶换1瓶汽水,最后,借一个空瓶,换一瓶汽水,并将空瓶换回去。共20+10+5+2+1+1+1=40瓶。另外两种思路:解题思路2: 先看1元钱最多能喝几瓶汽水。喝1瓶余1个空瓶,借商家1个空瓶,2个瓶换1瓶继续喝 ,喝完后把这1个空瓶还给商家。即1元钱最多能喝2瓶汽水。20元钱当然最多能喝40瓶汽水 。 解题思路3: 两个空瓶换一瓶汽水,可知纯汽水只值5角钱。20元钱当然最多能喝40瓶的纯汽水。N元钱当然最多能喝2N瓶汽水。
此题目可推广为:1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,则N元钱,可买2N瓶汽水。
对于问题3,实际上是一个有序数组上的搜索问题,但由于只有两个玻璃围棋子可用,所有不可以采用二分查找的方法。该题的解决思路是,首先在第x层仍一个玻璃围棋子,如果碎了,则利用另一个玻璃围棋子依次从1~x-1层试探,查找临界层;如果第x层未碎,则在第x+(x-1)=2x-1层仍一个玻璃围棋子,如果碎了,则利用另一个玻璃围棋子一次从x+1~2x-2层查找临界层,…,这样,可得到表达式:x+x-1+…+1>=100,可得到x=14,即:
先从14层扔(碎了试1-13)
再从27层扔(碎了试15-26)
再从39层扔(碎了试28-38)
再从50层扔(碎了试40-49)
再从60层扔(碎了试51-59)
再从69层扔(碎了试61-68)
再从77层扔(碎了试70-76)
再从84层扔(碎了试78-83)
再从90层扔(碎了试85-89)
再从95层扔(碎了试91-94)
再从99层扔(碎了试96-98)
最后从100层扔
原创文章,转载请注明: 转载自董的博客
本文链接地址: http://dongxicheng.org/brain/intelligence-problems-1/
作者:Dong,作者介绍:http://dongxicheng.org/about/
本博客的文章集合:http://dongxicheng.org/recommend/