首页 > 代码库 > 逻辑研究

逻辑研究

1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费?
2.村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?
答案:1.切成1段,2段,和四段.
1:给出1.
2:给出2,还回1.
3:给出1.
4:给出4,还回3.
5:给出1.
6:给出2,还回1.
7:给出1.
2.第一种推论:
  A、假设有1条病狗,病狗的主人会看到其他狗都没有病,那么就知道自己的狗有病,所以第一天晚上就会有枪响。因为没有枪响,说明病狗数大于1。
  B、假设有2条病狗,病狗的主人会看到有1条病狗,因为第一天没有听到枪响,是病狗数大于1,所以病狗的主人会知道自己的狗是病狗,因而第二天会有枪响。既然第二天也每有枪响,说明病狗数大于2。
  由此推理,如果第三天枪响,则有3条病狗。
  第二种推论
  1 如果为1,第一天那条狗必死,因为狗主人没看到病狗,但病狗存在。
  2 若为2,令病狗主人为a,b。 a看到一条病狗,b也看到一条病狗,但a看到b的病狗没死故知狗数不为1,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b的想法与a一样,故也开枪。
  由此,为2时,第一天看后2条狗必死。
  3 若为3条,令狗主人为a,b,c。 a第一天看到2条病狗,若a设自己的不是病狗,由推理2,第二天看时,那2条狗没死,故狗数肯定不是2,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c的想法与a一样,故也开枪。
  由此,为3时,第二天看后3条狗必死。
  4 若为4条,令狗主人为a,b,c,d。a第一天看到3条病狗,若a设自己的不是病狗,由推理3,第三天看时,那3条狗没死,故狗数肯定不是3,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c,d的想法与a一样,故也开枪。
  由此,为4时,第三天看后4条狗必死。
  5 余下即为递推了,由年n-1推出n。
  答案:n为4。第四天看时,狗已死了,但是在第三天死的,故答案是3条。

一、1.在一条街上,有5座房子,喷了5种颜色。
2.每个房子住着不同国籍的人。
3.每个人喝不同的饮料,抽不同品牌的烟,养不同的宠物
提问谁养鱼?
提示:1.英国人住红色的房子
2.瑞典人养狗
3.丹麦人喝茶
4.绿色房子在白色房子左边
5.绿色房子主人喝咖啡
6.抽AAA烟的人养鸟
7.黄色房子主人抽DDD烟
8.住在中间房子的人喝牛奶
9.挪威人住第一间房子
10.抽EEE烟的人住在养猫人的隔壁
11.养马的人住在抽DDD烟人的隔壁 
12.抽CCC烟的人喝啤酒
13.德国人抽BBB烟
14.挪威人住蓝色房子隔壁
15.抽EEE烟人有一个喝水的邻居
二、详细介绍: 5个囚犯,分别按1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?
提示:
1,他们都是很聪明的人
2,他们的原则是先求保命,再去多杀人
3,100颗不必都分完 不必分完 不必分完 注意 别复制别人的答案
4,若有重复的情况,则也算最大或最小,一并处死
三、一个人走到十字路口,有两条路可以走,但是只有其中一条路是正确的,他不知道怎么走,想问问路.这时路旁有两个人,其中一个人说真话另外一个人说假话.问:只能问其中一个人一句话,问走哪条路是正确的,该怎么问
四、这道题是这样的:有一个人,他来到了埃及的金字塔。他特别想去金字塔看个究竟。当他进去以后,门突然关上了。他从包里拿出一根蜡烛,点燃了它,这个人的眼前出现了两个门!门旁有个牌子,牌子上写着:“这里有两个门,一道是通向生的门,而另外一道门,就是通往死路的了。进去之后,无法再返回,须谨慎。两个门口分别守着两具骷髅,当然,他们会说话。一个总是说真话,而一个总是说假话。你只可以问他们其中的一个骷髅一个问题,而在做出答复之后,你要判断出来哪个门是通往活路的,才有可能有生的希望。”这个人犯难了,到底该问怎样的问题才能通过呢?
答案:
一、德国人养鱼
二、按这种规则,囚犯就不去抓了,最后打破规则,因为大家都是死路一条。
★★★证明如下:★★★
假设第1个囚犯取了x颗,第2个囚犯取了y颗,则第3个囚犯知道第1、第2个总共拿了(x+y)颗,那么他为了保命,一定选择最接近(x+y)/2的整数颗,同理,第4个囚犯选择的同样是最接近(x+y(x+y)/2)3=(x+y)/2的整数颗,以此类推,第5个囚犯也将选择到最接近(x+y)/2的整数颗。
当然,因为所有囚犯足够聪明,第1,第2个囚犯也应该明白这个道理,那么,如果x不等于y,那么第1、第2个囚犯必死,其他3个存活,由于规则是先保命,不能保也得多杀人,那么第2个囚犯选择为x颗,这样全部人都选择x颗,全死。
★★★另外,讨论x是否会大于100/5=20颗?
显然,x>20的话,第一个囚犯必死,而且一定有人存活,根据上述囚犯心理分析,因此不会出现这种情况。
★★★综合以上结果,所有人必死。★★★
★★★所有囚犯足够聪明,这个道理他们都明白,因此他们没必要完这个浪费时间的游戏。
三、我们把那两个人分为AB二人,然后指这其中一个人问另一个人,
假设指着B问A:"那个人会告诉我这条路(随便指一条路)是正确的"如果A说不对,那这条路就是正确的,如果A说对,这条路就不是正确的。
假设你指的那条路是 正确 的。
如果A是说真话的,那B就是说假话的,B不可能会告诉我正确的路。所以A会说不对。
如果A是说假话的,那B就是说真话的,B会告诉我正确的路。可是A是说假话的,所以A会说不对。
假设你指的那条路 不是正确 的。
如果A是说真话的,那B就是说假话的,B会告诉我那条不正确的路是正确的路。所以A会说对。
如果A是说假话的,那B就是说真话的,B会告诉我正确的路(所以B是不会告诉我那条路是正确的)。可是A是说假话的,所以A会说对。
这样的问法同时包括真话和假话,就如正负得负一样,最后把答案否定,如负负得正就行了。所以到最后还是不知道谁真谁假,可是却找到正确的路了
四、问其中的一个骷髅:
“如果我问另外那个骷髅守的是生门还是死门?他会说什么?”
回答1:“生门!”如果是真话,那他守的一定是生门。
                 如果是假话,那他守的也一定是生门。
回答2:“死门!”如果是真话,那他守的一定是死门。
                 如果是假话,那他守的也一定是死门。

(1)为什么下水道的盖子是圆的?
(2)美国有多少加油站?有多少辆汽车?
  (3)你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
  (4)你有4个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染药丸的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
  (5)如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出4夸脱的水?
  (6)将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?
  (7)如果要你去掉50个州的任何一个,那你去掉哪一个,为什么?
  (8)上海出租车数量占全市机动车总量的万分比是多少?
答案:(1)为什么下水道的盖子是圆的?
答:之所以是圆,是因为圆形每条直径长度都相等,不会掉到下水道去。其它形状存在至少两条不等的重垂线。有掉下去的可能。其实,方的也是有的。
(2)美国有多少加油站?有多少辆汽车?
答:对车的数量进行估计是估加油站数量的前提,因此把它们放到一起来考虑:儿童、公共交通设施良好的城里人、无家可归的人等没有自己的车辆;另一方面,富人、汽车收藏家、部分出租车司机都有一辆以上的车。每个人都有自己的车吗?不。两个人一辆可能还比较合理。如果按照3亿人口计算,美国就应该有1.5亿辆车。
一辆车的平均加油时间为每周一次。在一周内,全美国的加油站会为所有的车辆服务。
一个加油站一周之内能够为多少车辆加油?每周有168小时,但不是所有的加油站都是全天候开放。假定加油站的平均营业时间为每周100小时。如果6分钟可以给一辆车加完油,每个泵同时为多辆车加油,也有许多地处外偏僻的加油站半天没有一个顾客。如果这两种加油站平均下来每小时可以为10辆车加油,那么一个加油站每周可以为1000辆车加油。
这样就可以得知美国约有1.5亿/1000=15万个加油站。
[实证]
对车和加油站的估计都是合理的。美国交通部1997年的报告显示全国共有约129748704辆注册车辆。1998年的《石油市场杂志》指出在美国约有187097个加油站
(3)你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
答:把金条分成三段(就是分两次,或者切两刀),分别是整根金条的1/7、2/7 4/7
第一天:给1/7的,
第二天:给2/7的,收回1/7的
第三天,给1/7的
第四天:给4/7的,收回1/7和2/7的
第五天:给1/7的
第六天:给2/7的,收回1/7的
第七天:给1/7的
(4)你有4个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染药丸的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
答:第一个药瓶拿1个
第二个药瓶拿2个
第三个药瓶拿3个
第四个药瓶拿4个
计算标准的10颗药重量,与现在的10颗药比较
如果重量多1,就是第一个药瓶污染了
如果重量多2,就是第二个药瓶污染了
如果重量多3,就是第三个药瓶污染了
如果重量多4,就是第四个药瓶污染了
(5)如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出4夸脱的水?
答:首先用5夸脱的提捅剩满水,再倒满3夸脱的桶!桶里不就剩2夸脱的水吗?把这2夸脱的水倒在一个容器里!再用5夸脱的剩水倒满3夸脱,桶里又剩2夸脱,和前面的2夸脱的水倒一起不就4夸脱了!
6)将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?
答:向顺时针方向旋转即可
(7)如果要你去掉50个州的任何一个,那你去掉哪一个,为什么?
答:人口较少,天然资源不丰富的州,也就是说“北达科他州”。北达科他州与加拿大接壤,这也是可以“去除”的一个理由。
(8)上海出租车数量占全市机动车总量的万分比是多少?
答:万分之三百三十三...循环
1)一个男科学家回忆说:他和他的妻子去南极考察,但是他中途中了雪盲,什么都看不到。所以他们在南极游荡,最后只能生吃企鹅来维持生命。但是他妻子最后还是没有挺住,最后死了。他一个人继续走了一天,最后被救了回去。第二天他特意去企鹅店吃企鹅,但是回来后竟然自杀了。为什么?
  2)跳火车
  问:一个人坐火车去临镇看病,看完之后病全好了。回来的路上火车经过一个隧道,这个人就跳车自杀了。为什么?
  3)水草
  问:有个男孩跟他女友去河边散步。突然他的女友掉进河里了,那个男孩就急忙跳到水里去找,可没找到他的女友,他伤心的离开了这里。过了几年后,他故地重游,这时看到有个老人在钓鱼,可那老人钓上来的鱼身上没有水草,他就问那老人为什么鱼身上没有沾到一点水草,那老人说:这河从没有长过水草。说到这时,那男孩突然跳到水里自杀了。为什么?
  4)葬礼的故事
  问:有母女三人,母亲死了,姐妹俩去参加葬礼。妹妹在葬礼上遇见了一个很有型的男子,并对他一见倾心。会到家后,妹妹把姐姐杀了。为什么?
  5)半根火柴
  问:有一个人在沙漠中,头朝下死了,身边散落著几个行李箱子,而这个人手里紧抓著半个火柴。推理这个人是怎么死的?
  6)满地木屑
  问:马戏团里有两个侏儒,瞎子侏儒比另一个侏儒矮。马戏团只需要一个侏儒,马戏团的侏儒当然是越矮越好了。两个侏儒决定比谁的个子矮,个子高的就去自杀。可是,在约定比个子的前一天,瞎子侏儒,也就是那个矮的侏儒已经在家里自杀死了。在他的家里只发现木头做的家具和满地的木屑。他为什么自杀?
  7)夜半敲门
  问:一个人住在山顶的小屋里,半夜听见有敲门的,他打开门却没有人,于是去睡了。等了一会又有敲门声,去开门,还是没人,如是者几次。第二天,有人在山脚下发现死尸一具,警察来把山顶的那人带走了。为什么?
  8)牛吃草
  问:有一个年轻的男人,他的房子和邻居夫妇的房子中间隔着一片草坪。有一天深夜,男人被隔壁的吵架声吵醒,之后他又听到了摔东西声、砍斧子声和牛吃草的声音,过了一会,他又听到了有人撞他家门的声音,但他都没有理会,又睡了过去。第二天,他发现隔壁的女主人惨死在他家门口。推理其过程。
  9)无故的自杀
  问:一个下雨的夜晚.一个男子驾着车在自己车里听广播.这时广播里正在播出.由于当晚风强雨大.一架飞机失事的消息.这名男子正在认真听的时候,突然远处一阵雷声加闪电.广播由于干扰,停暂了几秒.就在广播快要恢复正常的时候,这名男子突然跳车自杀了.为什么?
答案:一.企鹅肉 
这次味道和他在荒岛上吃到的不一样,他才明白,在荒岛上他吃得是他女朋友的肉。 
二.跳火车 
他的眼睛瞎了,治好后经过火车隧道,黑暗中他以为他的眼睛又不行了,所以跳火车自杀。 
三.水草
他和女友一起掉落水中,他感觉到一些像水草一样的东东缠住他,他拼命挣脱,可是他女朋友却没有上来,等他知道这里没有水草,他才知道是他将他的女友推落水底。 
四.葬礼的故事 
如果不杀了姐姐,这个男人就不会出现,妹妹为了再次见到这个男人,就杀了自己的姐姐。 
五.半根火柴 
这个人和朋友一起搭乘热气球,但是气球受到气流影响,必须扔下一部分装备,但是仍然不行,所以大家抽签,那个抽到最短火柴的人就会被扔下去。 
六.满地木屑 
那个高个地侏儒将矮个侏儒家里的家具腿锯短了,矮个子侏儒起床后发现自己长高了,受到刺激所以就自杀了 
七.夜半敲门 
这个人的门是往外开的,他打开门将敲门的人推出去了,所以这个人掉下山,死了。 
八.牛吃草 
夫妻吵架,丈夫用斧头砍断妻子4肢,然后妻子用口咬着地上的草爬行~爬到"我"家门口用头嗑门求救~!最后自然是失血过多死了 
九.雨夜广播 
那男的是个聋子,后来治好了.然后闪电打雷后,广播没了,他以为自己又聋了,于是绝望自杀 
有3顶红帽子,4顶黑帽子,5顶白帽子。让10个人从矮到高站成一队,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面9个人头上帽子的颜色,而最前面那个人谁的帽子都看不见)。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。假设最前面那个人一定会知道自己戴的是黑帽子。为什么?
问题补充:
是任意从那12顶里面挑10顶出来带啊
1、有36只桶分别装到9艘船上,要求每艘船上都有桶,且每艘船上桶的数量必须是单数,请问怎么装?
2、国王招来100个囚犯,对他们说:你们犯的是死罪,但我给你们一次求生的机会。15分钟以后,你们将被关进一个有100间隔离牢房的监狱里,每人一间牢房,都与外界隔绝,什么也听不见看不到,连时间都没法计算,无法获得外界的任何信息。 
    这所监狱有一个院子,每天只少随机(注意是完全随机)打开一间牢房的门,让一个囚犯到院子里来放风。院子里有一盏灯,放风的囚犯可以控制它的开关,将它打开或是关闭。除囚犯之外,其他人都不会去碰开关。这盏灯会永远有充足的能源供应,灯泡和电路不会出故障。 
    除了开关这盏灯,放风的囚犯放风时留下的任何其它痕迹都会在夜晚被清除干净(包括在灯上作的任何记号)。牢房是完全封闭的,院子里的灯光在牢房里看不到。只有放风到院子里的人才能看到。 
    好了现在我向你们提出一个要求,只要你们做到了,就可以全部获得释放: 
    给你们15分钟商量你们的方案。15分钟以后,你们将被关进我刚才说的那个监狱,永远无法再交流,被关若干天后,你们中间如果任何一个人能够向我证明你们每个人都至少放风了一次,我就把你们放了,不然永远别想再出来。 
其中一个囚犯想了几分钟,回答了这个问题,国王听后,如自己所说的把他们全部给放了。请问那个囚犯是用什么方法证明的?
3、ABCDE*4=EDCBA  ,求A,B,C,D,E各是多少,它们都是自然数/
4、在河的这一岸:
有一个猎人带着一只狗;
一个男人带着两个小男孩;
一个女人带着两个小女孩;
只有一条船,要把这7个人和1只狗运到河的对岸去。
一次最多只能运两个物体(一个人、人和人,或人和狗)。
只有猎人、男人和女人会划船。
而且,
猎人不能离开狗,如果让狗和人单独相处,狗就咬人;
如果让女人和任何一个小男孩单独相处,女人会打小男孩;
如果让男人和任何一个小女孩单独相处,男人打小女孩。
怎样才能把人和狗安全的运到对岸。
写出过程。
5、在感恩节的饭桌旁坐着有一个曾祖父,两个爷爷,一个奶奶,三个父亲,两个妈妈,四个孩子,三个孙子,两个妻子,一个岳父,一位岳母,两个叔叔,三个姨妈,一个外甥,两个侄女。问最少有多少人在场?(一个人对于不同的人可能有不同的身份,如妈妈,女儿,奶奶。
答案:
1、三石(十)六只桶,九只船来装,都是单数捅.

三块石头九只桶,刚好九样,是一只船装一个
文字游戏拉,有助于锻炼智力~~
2、在这100个囚犯中,固定一个计数者,同时这个人也是开灯者,他要保证每一次自己出去放风回来的时候把灯打开,并且计数。其他的99个人要遵循这样的原则:如果出去放风的时候发现灯是开着的,并且自己还没有关过灯,那么把灯关上;其他的情况都不要管开关的状态。这样,只要当计数者出来放风的时候,第99次发现灯是关着的状态,他就可以肯定所有的人都出来放过风了。
3、21978
4、设定A为原地,B为对岸
1.猎人+狗到B,留狗 回A
2.猎人+男孩到B,留男孩,带狗回A
3、男人+男孩到B,留男孩,回A
4.男人+女人到B,留男人,女人回A
5、猎人+狗到B,男人回A
6、男人+女人到B 留男人,女人回A
7、女人+女孩到B,留女人+女孩,猎人+狗回A
8、猎人+女孩到B,留女孩,猎人回A
9.猎人+狗到B。完成!
  

1 数星星问题
问题:A和B晚上无聊就开始数星星。每次只能数k个(20<=k<=30),A和B轮流数。最后谁把星星数完谁就获胜,那么当星星数量为多少时A必胜?
解答:
这种类型的题目见的非常多了,每次就换个数字,这次就给个一般化的解法。
从简单的问题入手进行分析。有一堆石头,两个人轮流取,每次可以取1个,2个或3个。最后谁把石头取完谁获胜。问用什么策略来取胜。
假设经过前面在的一阵乱取XD,最后剩几个,你让对方取完,怎么保证你能把剩下的都取走?很直观的,剩下4个。对方无论取1个,2个还是3个,你都能把剩下的取完。OK,往前推,只要每次石头的个数是4的倍数的时候,轮到对方取,他拿x个,你就拿4-x个,你就一定会获胜。设石头总数为n,必胜的策略如下:
1.如果n是4的倍数,让对方先拿。每次他拿x个,你就拿4-x个。
2.如果n不是4的倍数,你先拿。拿走一些,使剩下的石头数是4的倍数,然后同上。

好的,把问题一般化一下。假设我们每次可以拿的石头数量是[a,b],闭区间,表示最少要拿a个,最多只能拿b个。那么,又是一阵乱取,最后剩一点,让对方拿,对方拿完后,你一定能取完剩下石头的条件是:最后剩那一点的数量是a+b个。那么,对方最少拿a个,剩下b个,你可以取完;对方最多拿b个,剩下a个,你可以取完。对方拿x个,剩下的a+b-x你一定可以取完。这回必胜的策略如下,和上面略有不同:
1.如果n是a+b的倍数,让对方先拿,每次他拿走x个,你就拿a+b-x个。
2.如果n不是a+b的倍数,假设n=(a+b)*p+q,那么,你先拿。你要拿走q个,才能使剩下的石头是a+b的倍数,才能保证你赢。因此q要满足你能拿走的数量条件,即a<=q<=b;

经常会遇到的特例,就是一次可拿1-m(即a=1,b=m)个石头,那么根据上面的策略,无论石头数量是多少,A都有必胜的策略。因为对于数量不能整除(1+m)的数量n,有n=(1+m)*p+q,q必满足1<=q<=m的。

Ok,这道数星星的题目已经异常简单了。问的是星星数量为多少时A必胜。从上面的策略可知:当星星数量n可以整除50时,或者当n对50取余落在区间[20,30]时,A必胜。(当然谁先拿要由A来决定)

让我们来扩展一下,换个思路,如果最后取完石头的人认输,那又该怎么解?还是老样子,我们每次可拿的石头数量是区间[a,b]。当最后取完石头的人赢,我们已经得出了A取胜的策略,那么要推出最后取完石头的人输其实并不难了。我们只要留下最后a个石头给对方(B),而他最少有必需拿a个,因此他就输了。
策略如下:
1.如果n=a+(a+b)*p,让对方先拿,每次他拿x个,你就拿a+b-x个,最后必然剩下a个给对方拿。
2.如果无法表示成上面的形式,即n=a+(a+b)*p+q(q不等于0),那么你先拿,拿走q个,是n=a+(a+b)*p,接下来就和1一样了。由于你每次能拿的石头数量是[a,b],因此q要满足:a<=q<=b.

特例:当a=1,b=m时,即每次能拿1到m个石头,无论石头总数n是多少,A都有必胜策略。因为此时n一定可以可以表示成n=1+(1+m)*p或是n=1+(1+m)*p+q(1<=q<=m)。
再总结一下,如果有一堆石头,每次能取1到m个,那么无论石头数量n是多少,也无论最后拿完石头的人判定为赢还是输,只要A能决定谁先拿,他就一定有必胜的策略。


2

程序员有趣的面试智力题

偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么 n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开关控制,三架飞机环游世界,用火柴和两根绳子测量 45分钟之类的题目,火星得已经可以考古了,这里就不再说了。

     1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置 于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略 是什么?
    
答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样,只要后行者能放,先行者一定也有地方放。先行者必胜。

    2 用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。
    答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词内部的字符逆序。这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。

    3 用线性时间和常数附加空间将一个长度为 n的字符串向左循环移动m位(例如, "abcdefg"移动3 位就变成了"defgabc")。 
    
答案:把字符串切成长为 mn-m 的两半。将这两个部分分别逆序,再对整个字符串逆序。

    4、一个矩形蛋糕,蛋糕内部有一块矩形的空洞。只用一刀,如何将蛋糕切成大小相等的两块? 
    
答案:注意到平分矩形面积的线都经过矩形的中心。过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。

    5 一块矩形的巧克力,初始时由 N x M个小块组成。每一次你只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成 N x M1x1 的小巧克力?
    答案: N x M - 1次显然足够了。这个数目也是必需的,因为每掰一次后当前巧克力的块数只能增加一,把巧克力分成 N x M块当然需要至少掰N x M - 1次。

    6、如何快速找出一个 32位整数的二进制表达里有多少个 "1"?用关于"1" 的个数的线性时间?
    答案1 (关于数字位数线性): for(n=0; b; b >>= 1) if (b & 1) n++;
   
 答案 2(关于"1" 的个数线性): for(n=0; b; n++) b &= b-1;

    7 一个大小为N 的数组,所有数都是不超过 N-1的正整数。用O(N)的时间找出重复的那个数(假设只有一个)。一个大小为 N的数组,所有数都是不超过 N+1的正整数。用O(N)的时间找出没有出现过的那个数(假设只有一个)。
    答案:计算数组中的所有数的和,再计算出从 1N-1 的所有数的和,两者之差即为重复的那个数。计算数组中的所有数的和,再计算出从 1N+1 的所有数的和,两者之差即为缺少的那个数。

    8 给出一行C 语言表达式,判断给定的整数是否是一个 2的幂。
    答案:(b & (b-1)) == 0

    9、地球上有多少个点,使得从该点出发向南走一英里,向东走一英里,再向北走一英里之后恰好回到了起点? 
   
 答案: 北极点 是一个传统的答案,其实这个问题还有其它的答案。事实上,满足要求的点有无穷多个。所有距离南极点 1 + 1/(2π)英里的地方都是满足要求的,向南走一英里后到达距离南极点 1/(2π)的地方,向东走一英里后正好绕行纬度圈一周,再向北走原路返回到起点。 事实上,这仍然不是满足要求的全部点。距离南极点 1 + 1/(2kπ)的地方都是可以的,其中 k可以是任意一个正整数。

      10 AB 两人分别在两座岛上。 B生病了,A B所需要的药。 C有一艘小船和一个可以上锁的箱子。 C愿意在A B之间运东西,但东西只能放在箱子里。只 要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果 AB 各自有一把锁和只能开自己那把锁的钥匙, A应该如何把东西安全递交给 B
    
答案: A把药放进箱子,用自己的锁把箱子锁上。 B拿到箱子后,再在箱子上加一把自己的锁。箱子运回 A后,A 取下自己的锁。箱子再运到 B手中时,B 取下自己的锁,获得药物。

    11 一对夫妇邀请N-1对夫妇参加聚会(因此聚会上总共有 2N人)。每个人都和所有自己不认识的人握了一次手。然后,男主人问其余所有人(共 2N-1个人)各自都握了几次手,得到的答案全部都不一样。假设每个人都认识自己的配偶,那么女主人握了几次手? 
   
 答案:握手次数只可能是从 02N-2 2N-1个数。除去男主人外,一共有 2N-1个人,因此每个数恰好出现了一次。其中有一个人 (0)没有握手,有一 个人 (2N-2)和所有其它的夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是 0)。除去这对夫妻外,有一个人 (1)只与(2N-2) 握过手,有一个人 (2N-3)和除了(0) 以外的其它夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握 手次数不再是1)。以此类推,直到握过 N-2次手的人和握过N次手的人配成一对。此时,除了男主人及其配偶以外,其余所有人都已经配对。根据排除法,最后 剩下来的那个握手次数为 N-1的人就是女主人了。

 

    12、两个机器人,初始时位于数轴上的不同位置。给这两个机器人输入一段相同的程序,使得这两个机器人保证可以相遇。程序只能包含 左移n 个单位  n个单位 ,条件判断语句If,循环语句 while,以及两个返回Boolean值的函数 在自己的起点处 在对方的起点处。你不能使用其它的变 量和计数器。
    
答案:两个机器人同时开始以单位速度右移,直到一个机器人走到另外一个机器人的起点处。然后,该机器人以双倍速度追赶对方。程序如下。

while(!at_other_robots_start) {
  move_right 1
}
while(true) {
  move_right 2
}

    13 如果叫你从下面两种游戏中选择一种,你选择哪一种?为什么?
      a. 写下一句话。如果这句话为真,你将获得 10美元;如果这句话为假,你获得的金钱将少于 10美元或多于10 美元(但不能恰好为 10美元)。
      b. 写下一句话。不管这句话的真假,你都会得到多于 10美元的钱。
    答案:选择第一种游戏,并写下 我既不会得到10美元,也不会得到 10000000美元 


      14 、你在一幢100层大楼下,有 21根电线线头标有数字1..21。这些电线一直延伸到大楼楼顶,楼顶的线头处标有字母 A..U。你不知道下面的数字和 上面的字母的对应关系。你有一个电池,一个灯泡,和许多很短的电线。如何只上下楼一次就能确定电线线头的对应关系? 
       
 案:在下面把2,3连在一起,把 46 全连在一起,把 710 全连在一起,等等,这样你就把电线分成了 6 等价类,大小分别为 1, 2, 3, 4, 5, 6。然后到楼顶,测出哪根线和其它所有电线都不相连,哪些线和另外一根相连,哪些线和另外两根相连,等等,从而确定出字母 A..U各属于哪个等价类。现 在,把每个等价类中的第一个字母连在一起,形成一个大小为 6的新等价类;再把后5个等价类中的第二个字母连在一起,形成一个大小为 5的新等价类;以此类 推。回到楼下,把新的等价类区别出来。这样,你就知道了每个数字对应了哪一个原等价类的第几个字母,从而解决问题。

    15、某种药方要求非常严格,你每天需要同时服用 AB 两种药片各一颗,不能多也不能少。这种药非常贵,你不希望有任何一点的浪费。一天,你打开装药片 A 的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药片。现在,你手心上有一颗药片 A,两颗药片B ,并且你无法区别哪个是 A,哪个是 B。你如何才能严格遵循药方服用药片,并且不能有任何的浪费? 
    
答案:把手上的三片药各自切成两半,分成两堆摆放。再取出一粒药片 A,也把它切成两半,然后在每一堆里加上半片的 A。现在,每一堆药片恰好包含两个半片的 A和两个半片的B。一天服用其中一堆即可。

     16 你在一个飞船上,飞船上的计算机有 n个处理器。突然,飞船受到外星激光武器的攻击,一些处理器被损坏了。你知道有超过一半的处理器仍然是好的。你可以向一 个处理器询问另一个处理器是好的还是坏的。一个好的处理器总是说真话,一个坏的处理器总是说假话。用 n-2次询问找出一个好的处理器。
         案:给处理器从 1n 标号。用符号 a->b表示向标号为a的处理器询问处理器 b是不是好的。首先问1->2,如果 1说不是,就把他们俩都去掉 (去掉了一个好的和一个坏的,则剩下的处理器中好的仍然过半),然后从 3->4开始继续发问。如果1 2是好的,就继续问 2->3 3->4…… 直到某一次j j+1是坏的,把j j+1去掉,然后问 j-1 -> j+2;或者从 j+2 -> j+3开始发问,如果前面已经没有 j-1了(之前已经被去掉过了)。注意到你始终维护着这样一个  ,前面的每一个处理器都说后面那个是好的。这条链里 的所有处理器要么都是好的,要么都是坏的。当这条链越来越长,剩下的处理器越来越少时,总有一个时候这条链超过了剩下的处理器的一半,此时可以肯定这条链 里的所有处理器都是好的。或者,越来越多的处理器都被去掉了,链的长度依旧为 0,而最后只剩下一个或两个处理器没被问过,那他们一定就是好的了。另外注意 到,第一个处理器的好坏从来没被问过,仔细想想你会发现最后一个处理器的好坏也不可能被问到(一旦链长超过剩余处理器的一半,或者最后没被去掉的就只剩这 一个了时,你就不问了),因此询问次数不会超过 n-2

      17、一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向? 
     
 答案:你可以把两个相机放在圆盘上相近的两点,然后观察哪个点先变色。事实上,只需要一个相机就够了。控制相机绕圆盘中心顺时针移动,观察颜色多久变一 次;然后让相机以相同的速度逆时针绕着圆盘中心移动,再次观察变色的频率。可以断定,变色频率较慢的那一次,相机的转动方向是和圆盘相同的。

     18 25匹马,速度都不同,但每匹马的速度都是定值。现在只有 5条赛道,无法计时,即每赛一场最多只能知道 5匹马的相对快慢。问最少赛几场可以找出 25匹马中速度最快的前3名? 百度2008 年面试题

每匹马都至少要有一次参赛的机会,所以 25匹马分成5 组,一开始的这 5场比赛是免不了的。接下来要找冠军也很容易,每一组的冠军在一起赛一场就行了 (第6 场)。最后就是要找第 2和第3 名。我们按照第 6场比赛中得到的名次依次把它们在前 5场比赛中所在的组命名为 AB C DE 。即:A组的冠军是第 6场的第1 名,B组的冠军是第 6场的第2 ……每一组的 5匹马按照他们已经赛出的成绩从快到慢编号:

A组: 123 45
B
组:1 23 4 5
C
组:1 23 4 5
D
组:1 23 4 5
E
组:1 23 4 5

从现在所得到的信息,我们可以知道哪些马已经被排除在 3名以外。只要已经能确定有 3匹或3 匹以上的马比这匹马快,那么它就已经被淘汰了。可以看到, 只有上表中粗体的那5匹马是有可能为 23 名的。即: A组的2 3名; B组的1 2名, C组的第1 名。取这 5匹马进行第7场比赛,第 7场比赛的前两名就是 25匹马中的 23 名。故一共最少要赛 7场。

这道题有一些变体,比如 64匹马找前4 名。方法是一样的,在得出第 1名以后寻找后3名的候选竞争者就可以了。


Link: http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=32767&tid=1000003262

 1、一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么? 

2、有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同, 而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?
3.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现在只允许进门一次,确定开关和灯的对应关系?
4.你有两个罐子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球放入罐子,怎么给出红色弹球最大的选中机会?在你的计划里,得到红球的几率是多少?
答案:1.此经理有一对双胞胎女儿,她们的年龄分别是:2岁、2岁、9岁;经理的年龄是32岁;有以下几种可能:1*1*11=11,1*2**10=20,1*3*9=27,1*4*8=32,1*5*7=35,{1*6*6=36},{2*2*9=36},2*3*8=48,2*4*7=56,2*5*6=60,3*3*7=63,3*4*6=72,3*5*5=75,4*4*5=80 而其中,只有一个女儿头发是黑的说明有一个年纪比较大,剩下两个较小,因此只有2*2*9=36一种可能
2.把袜子放在太阳下晒一晒 黑色吸热后温度升高 四双黑色和四双百色的就区分出来了 再一人两双就好
3.在门外开两盏灯 其中,一盏一直开着 一盏开十分钟后关掉;进屋,亮着的是那盏对应一直开着的,没亮的两盏中灯泡热的对应刚才关掉的,凉的对应没开过的那盏
4.红色弹球最大的选中机会:一个罐子放一个红球,另一个罐子放49个红球和50个蓝球,得到红球概率大于50%.

逻辑研究