几个逻辑题 差不多是数学题

来自:    更新日期:早些时候
求高智商逻辑题,不要死人,破案一类的,最好是类似于几何数学题~

海盗分赃1
5个很聪明的海盗抢到100个金币,他们决定依次由A,B,C,D,E五个海盗来分
当由A分时,剩下的海盗表决,如果B,C,D,E四人中有一半以上反对就把A扔下海,再由B分„„以此类推;如果一半及以上的人同意,就按A的分法
请问A要依次分给B,C,D,E多少才能不被扔下海并且让自己拿到最多? 海盗分赃2
5个很聪明的海盗抢到100个金币,他们决定依次由A,B,C,D,E五个海盗来分
当由A分时,如果A,B,C,D,E五人中有一半以上反对就把A扔下海,再由B分„„以此类推;如果一半及以上的人同意,就按A的分法
请问A要依次分给B,C,D,E多少才能不被扔下海并且让自己拿到最多? 海盗分赃3
5个很聪明的海盗抢到100个金币,他们决定依次由A,B,C,D,E五个海盗来分
当由A分时,剩下的海盗表决,如果B,C,D,E四人中有一半及以上反对就把A扔下海,再由B分„„以此类推;如果一半以上的人同意,就按A的分法
请问A要依次分给B,C,D,E多少才能不被扔下海并且让自己拿到最多

每张桌子坐3人,就会多出2人,总人数是3的倍数少1
每张桌子坐5人,就会多出4人,总人数是5的倍数少1
每张桌子坐7人,就会多出6人,总人数是7的倍数少1
每张桌子坐9人,就会多出8人,总人数是9的倍数少1
设总人数是N,那么N=5×7×9×K-1=315K-1,其中K是自然数
当每张桌子坐11人,就没有人多出来了,N是11的倍数,即315K-1是11的倍数
315K-1=(308+7)K-1=(11×28+7)K-1=11×28K+7K-1
所以7K-1是11的倍数,K可取8,19,30,……,11m-3,(其中m是自然数)
当K=8时,总人数N=2519
2519÷3=839……2
2519÷5=503……4
2519÷7=359……6
2519÷9=279……8
2519÷11=229

1、第一个瓶子拿出一片,第二个瓶子拿出四片,第三个拿出十六片,……第m个拿出n+1的m-1次方片。把所有这些药片放在一起称重量。

2、“有3顶黑帽子,2顶白帽子。让三个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面两个人头上帽子的颜色,中间那个人看得见前面那个人的帽子颜色但看不见在他后面那个人的帽子颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。事实上他们三个戴的都是黑帽子,那么最前面那个人一定会知道自己戴的是黑帽子。为什么?”

答案是,最前面的那个人听见后面两个人都说了“不知道”,他假设自己戴的是白帽子,于是中间那个人就看见他戴的白帽子。那么中间那个人会作如下推理:“假设我戴了白帽子,那么最后那个人就会看见前面两顶白帽子,但总共只有两顶白帽子,他就应该明白他自己戴的是黑帽子,现在他说不知道,就说明我戴了白帽子这个假定是错的,所以我戴了黑帽子。”问题是中间那人也说不知道,所以最前面那个人知道自己戴白帽子的假定是错的,所以他推断出自己戴了黑帽子。

我们把这个问题推广成如下的形式:

“有若干种颜色的帽子,每种若干顶。假设有若干个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,而且每个人都看得见在他前面所有人头上帽子的颜色,却看不见在他后面任何人头上帽子的颜色。现在从最后那个人开始,

问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。一直往前问,那么一定有一个人知道自己所戴的帽子颜色。”

当然要假设一些条件:

1)首先,帽子的总数一定要大于人数,否则帽子都不够戴。

2)“有若干种颜色的帽子,每种若干顶,有若干人”这个信息是队列中所有人都事先知道的,而且所有人都知道所有人都知道此事,所有人都知道所有人都知道所有人都知道此事,等等等等。但在这个条件中的“若干”不一定非要具体一一给出数字来。

这个信息具体地可以是象上面经典的形式,列举出每种颜色帽子的数目“有3顶黑帽子,2顶白帽子,3个人”,也可以是“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”,甚至连具体人数也可以不知道,“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,这时候那个排在最后的人并不知道自己排在最后——直到开始问他时发现在他回答前没有别人被问到,他才知道他在最后。在这个帖子接下去的部分当我出题的时候我将只写出“有若干种颜色的帽子,每种若干顶,有若干人”这个预设条件,因为这部分确定了,题目也就确定了。

3)剩下的没有戴在大家头上的帽子当然都被藏起来了,队伍里的人谁都不知道都剩下些什么帽子。

4)所有人都不是色盲,不但不是,而且只要两种颜色不同,他们就能分别出来。当然他们的视力也很好,能看到前方任意远的地方。他们极其聪明,逻辑推理是极好的。总而言之,只要理论上根据逻辑推导得出来,他们就一定推导得出来。相反地如果他们推不出自己头上帽子的颜色,任何人都不会试图去猜或者作弊偷看——不知为不知。

5)后面的人不能和前面的人说悄悄话或者打暗号。

当然,不是所有的预设条件都能给出一个合理的题目。比如有99顶黑帽子,99顶白帽子,2个人,无论怎么戴,都不可能有人知道自己头上帽子的颜色。另外,只要不是只有一种颜色的帽子,在只由一个人组成的队伍里,这个人也是不可能说出自己帽子的颜色的。

但是下面这几题是合理的题目:

1)3顶红帽子,4顶黑帽子,5顶白帽子,10个人。

2)3顶红帽子,4顶黑帽子,5顶白帽子,8个人。

3)n顶黑帽子,n-1顶白帽子,n个人(n>0)。

4)1顶颜色1的帽子,2顶颜色2的帽子,……,99顶颜色99的帽子,100顶颜色100的帽子,共5000个人。

5)有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人。

6)有不知多少人(至少两人)排成一排,有黑白两种帽子,每种帽子的数目都比人数少1。

大家可以先不看我下面的分析,试着做做这几题。

如果按照上面3顶黑帽2顶白帽时的推理方法去做,那么10个人就可以把我们累死,别说5000个人了。但是3)中的n是个抽象的数,考虑一下怎么解决这个问题,对解决一般的问题大有好处。

假设现在n个人都已经戴好了帽子,问排在最后的那一个人他头上的帽子是什么颜色,什么时候他会回答“知道”?很显然,只有在他看见前面n-1个人都戴着白帽时才可能,因为这时所有的n-1顶白帽都已用光,在他自己的脑袋上只能顶着黑帽子,只要前面有一顶黑帽子,那么他就无法排除自己头上是黑帽子的可能——即使他看见前面所有人都是黑帽,他还是有可能戴着第n顶黑帽。

现在假设最后那个人的回答是“不知道”,那么轮到问倒数第二人。根据最后面那位的回答,他能推断出什么呢?如果他看见的都是白帽,那么他立刻可以推断出自己戴的是黑帽——要是他也戴着白帽,那么最后那人应该看见一片白帽,问到他时他就该回答“知道”了。但是如果倒数第二人看见前面至少有一顶黑帽,他就无法作出判断——他有可能戴着白帽,但是他前面的那些黑帽使得最后那人无法回答“知道”;他自然也有可能戴着黑帽。

这样的推理可以继续下去,但是我们已经看出了苗头。最后那个人可以回答“知道”当且仅当他看见的全是白帽,所以他回答“不知道”当且仅当他至少看见了一顶黑帽。这就是所有帽子颜色问题的关键!

如果最后一个人回答“不知道”,那么他至少看见了一顶黑帽,所以如果倒数第二人看见的都是白帽,那么最后那个人看见的至少一顶黑帽在哪里呢?不会在别处,只能在倒数第二人自己的头上。这样的推理继续下去,对于队列中的每一个人来说就成了:

“在我后面的所有人都看见了至少一顶黑帽,否则的话他们就会按照相同的判断断定自己戴的是黑帽,所以如果我看见前面的人戴的全是白帽的话,我头上一定戴着我身后那个人看见的那顶黑帽。”

我们知道最前面的那个人什么帽子都看不见,就不用说看见黑帽了,所以如果他身后的所有人都回答说“不知道”,那么按照上面的推理,他可以确定自己戴的是黑帽,因为他身后的人必定看见了一顶黑帽——只能是第一个人他自己头上的那顶。事实上很明显,第一个说出自己头上是什么颜色帽子的那个人,就是从队首数起的第一个戴黑帽子的人,也就是那个从队尾数起第一个看见前面所有人都戴白帽子的人。

这样的推理也许让人觉得有点循环论证的味道,因为上面那段推理中包含了“如果别人也使用相同的推理”这样的意思,在逻辑上这样的自指式命题有点危险。但是其实这里没有循环论证,这是类似数学归纳法的推理,每个人的推理都建立在他后面那些人的推理上,而对于最后一个人来说,他的身后没有人,所以他的推理不依赖于其他人的推理就可以成立,是归纳中的第一个推理。稍微思考一下,我们就可以把上面的论证改得适合于任何多种颜色的推论:

“如果我们可以从假设断定某种颜色的帽子一定会在队列中出现,从队尾数起第一个看不见这种颜色的帽子的人就立刻可以根据和此论证相同的论证来作出判断,他戴的是这种颜色的帽子。现在所有我身后的人都回答不知道,所以我身后的人也看见了此种颜色的帽子。如果在我前面我见不到此颜色的帽子,那么一定是我戴着这种颜色的帽子。”

当然第一个人的初始推理相当简单:“队列中一定有人戴这种颜色的帽子,现在我看不见前面有人戴这颜色的帽子,那它只能是戴在我的头上了。”

对于题1)事情就变得很明显,3顶红帽子,4顶黑帽子,5顶白帽子给10个人戴,队列中每种颜色至少都该有一顶,于是从队尾数起第一个看不见某种颜色的帽子的人就能够断定他自己戴着这种颜色的帽子,通过这点我们也可以看到,最多问到从队首数起的第三人时,就应该有人回答“知道”了,因为从队首数起的第三人最多只能看见两顶帽子,所以最多看见两种颜色,如果他后面的人都回答“不知道”,那么他前面一定有两种颜色的帽子,而他头上戴的一定是他看不见的那种颜色的帽子。

题2)也一样,3顶红帽子,4顶黑帽子,5顶白帽子给8个人戴,那么队列中一定至少有一顶白帽子,因为其它颜色加起来一共才7顶,所以队列中一定会有人回答“知道”。

题4)的规模大了一点,但是道理和2)完全一样。100种颜色的5050顶帽子给5000人戴,前面99种颜色的帽子数量是1+……+99=4950,所以队列中一定有第100种颜色的帽子(至少有50顶),所以如果自己身后的人都回答“不知道”,那么那个看不见颜色100帽子的人就可以断定自己戴着这种颜色的帽子。

至于5)、6)“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”以及“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,原理完全相同,我就不具体分析了。

最后要指出的一点是,上面我们只是论证了,如果我们可以根据各种颜色帽子的数量和队列中的人数判断出在队列中至少有一顶某种颜色的帽子,那么一定有一人可以判断出自己头上的帽子的颜色。因为如果所有身后的人都回答“不知道”的话,那个从队尾数起第一个看不见这种颜色的帽子的人就可以判断自己戴了此颜色的帽子。但是这并不是说在询问中一定是由他来回答“知道”的,因为还可能有其他的方法来判断自己头上帽子的颜色。比如说在题2)中,如果队列如下:(箭头表示队列中人脸朝的方向)

白白黑黑黑黑红红红白→

那么在队尾第一人就立刻可以回答他头上的是白帽,因为他看见了所有的3顶红帽子和4顶黑帽子,能留给他自己戴的只能是白帽子了

3、本题可用递归算法,但时间复杂度为2的n次方,也可以用动态规划法,时间复杂度为n的平方,实现起来相对要简单得多,但最方便的就是直接运用公式:排队的种数=(2n)!/[n!(n+1)!]。

如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数),对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种的排队方法有(2n)!/[(n-1)!(n+1)!](从2n个人中取出n-1个人的组合数)种,所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至于为什么不合格数是(2n)!/[(n-1)!(n+1)!],说起来太复杂,这里就不讲了。
祝你好运!

第二个题的答案长点,需要一定耐心。另外,全套75题的答案我都有哦。

1、第一个瓶子拿出一片,第二个瓶子拿出四片,第三个拿出十六片,……第m个拿出n+1的m-1次方片。把所有这些药片放在一起称重量。

2、“有3顶黑帽子,2顶白帽子。让三个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面两个人头上帽子的颜色,中间那个人看得见前面那个人的帽子颜色但看不见在他后面那个人的帽子颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。事实上他们三个戴的都是黑帽子,那么最前面那个人一定会知道自己戴的是黑帽子。为什么?”

答案是,最前面的那个人听见后面两个人都说了“不知道”,他假设自己戴的是白帽子,于是中间那个人就看见他戴的白帽子。那么中间那个人会作如下推理:“假设我戴了白帽子,那么最后那个人就会看见前面两顶白帽子,但总共只有两顶白帽子,他就应该明白他自己戴的是黑帽子,现在他说不知道,就说明我戴了白帽子这个假定是错的,所以我戴了黑帽子。”问题是中间那人也说不知道,所以最前面那个人知道自己戴白帽子的假定是错的,所以他推断出自己戴了黑帽子。

我们把这个问题推广成如下的形式:

“有若干种颜色的帽子,每种若干顶。假设有若干个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,而且每个人都看得见在他前面所有人头上帽子的颜色,却看不见在他后面任何人头上帽子的颜色。现在从最后那个人开始,

问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。一直往前问,那么一定有一个人知道自己所戴的帽子颜色。”

当然要假设一些条件:

1)首先,帽子的总数一定要大于人数,否则帽子都不够戴。

2)“有若干种颜色的帽子,每种若干顶,有若干人”这个信息是队列中所有人都事先知道的,而且所有人都知道所有人都知道此事,所有人都知道所有人都知道所有人都知道此事,等等等等。但在这个条件中的“若干”不一定非要具体一一给出数字来。

这个信息具体地可以是象上面经典的形式,列举出每种颜色帽子的数目“有3顶黑帽子,2顶白帽子,3个人”,也可以是“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”,甚至连具体人数也可以不知道,“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,这时候那个排在最后的人并不知道自己排在最后——直到开始问他时发现在他回答前没有别人被问到,他才知道他在最后。在这个帖子接下去的部分当我出题的时候我将只写出“有若干种颜色的帽子,每种若干顶,有若干人”这个预设条件,因为这部分确定了,题目也就确定了。

3)剩下的没有戴在大家头上的帽子当然都被藏起来了,队伍里的人谁都不知道都剩下些什么帽子。

4)所有人都不是色盲,不但不是,而且只要两种颜色不同,他们就能分别出来。当然他们的视力也很好,能看到前方任意远的地方。他们极其聪明,逻辑推理是极好的。总而言之,只要理论上根据逻辑推导得出来,他们就一定推导得出来。相反地如果他们推不出自己头上帽子的颜色,任何人都不会试图去猜或者作弊偷看——不知为不知。

5)后面的人不能和前面的人说悄悄话或者打暗号。

当然,不是所有的预设条件都能给出一个合理的题目。比如有99顶黑帽子,99顶白帽子,2个人,无论怎么戴,都不可能有人知道自己头上帽子的颜色。另外,只要不是只有一种颜色的帽子,在只由一个人组成的队伍里,这个人也是不可能说出自己帽子的颜色的。

但是下面这几题是合理的题目:

1)3顶红帽子,4顶黑帽子,5顶白帽子,10个人。

2)3顶红帽子,4顶黑帽子,5顶白帽子,8个人。

3)n顶黑帽子,n-1顶白帽子,n个人(n>0)。

4)1顶颜色1的帽子,2顶颜色2的帽子,……,99顶颜色99的帽子,100顶颜色100的帽子,共5000个人。

5)有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人。

6)有不知多少人(至少两人)排成一排,有黑白两种帽子,每种帽子的数目都比人数少1。

大家可以先不看我下面的分析,试着做做这几题。

如果按照上面3顶黑帽2顶白帽时的推理方法去做,那么10个人就可以把我们累死,别说5000个人了。但是3)中的n是个抽象的数,考虑一下怎么解决这个问题,对解决一般的问题大有好处。

假设现在n个人都已经戴好了帽子,问排在最后的那一个人他头上的帽子是什么颜色,什么时候他会回答“知道”?很显然,只有在他看见前面n-1个人都戴着白帽时才可能,因为这时所有的n-1顶白帽都已用光,在他自己的脑袋上只能顶着黑帽子,只要前面有一顶黑帽子,那么他就无法排除自己头上是黑帽子的可能——即使他看见前面所有人都是黑帽,他还是有可能戴着第n顶黑帽。

现在假设最后那个人的回答是“不知道”,那么轮到问倒数第二人。根据最后面那位的回答,他能推断出什么呢?如果他看见的都是白帽,那么他立刻可以推断出自己戴的是黑帽——要是他也戴着白帽,那么最后那人应该看见一片白帽,问到他时他就该回答“知道”了。但是如果倒数第二人看见前面至少有一顶黑帽,他就无法作出判断——他有可能戴着白帽,但是他前面的那些黑帽使得最后那人无法回答“知道”;他自然也有可能戴着黑帽。

这样的推理可以继续下去,但是我们已经看出了苗头。最后那个人可以回答“知道”当且仅当他看见的全是白帽,所以他回答“不知道”当且仅当他至少看见了一顶黑帽。这就是所有帽子颜色问题的关键!

如果最后一个人回答“不知道”,那么他至少看见了一顶黑帽,所以如果倒数第二人看见的都是白帽,那么最后那个人看见的至少一顶黑帽在哪里呢?不会在别处,只能在倒数第二人自己的头上。这样的推理继续下去,对于队列中的每一个人来说就成了:

“在我后面的所有人都看见了至少一顶黑帽,否则的话他们就会按照相同的判断断定自己戴的是黑帽,所以如果我看见前面的人戴的全是白帽的话,我头上一定戴着我身后那个人看见的那顶黑帽。”

我们知道最前面的那个人什么帽子都看不见,就不用说看见黑帽了,所以如果他身后的所有人都回答说“不知道”,那么按照上面的推理,他可以确定自己戴的是黑帽,因为他身后的人必定看见了一顶黑帽——只能是第一个人他自己头上的那顶。事实上很明显,第一个说出自己头上是什么颜色帽子的那个人,就是从队首数起的第一个戴黑帽子的人,也就是那个从队尾数起第一个看见前面所有人都戴白帽子的人。

这样的推理也许让人觉得有点循环论证的味道,因为上面那段推理中包含了“如果别人也使用相同的推理”这样的意思,在逻辑上这样的自指式命题有点危险。但是其实这里没有循环论证,这是类似数学归纳法的推理,每个人的推理都建立在他后面那些人的推理上,而对于最后一个人来说,他的身后没有人,所以他的推理不依赖于其他人的推理就可以成立,是归纳中的第一个推理。稍微思考一下,我们就可以把上面的论证改得适合于任何多种颜色的推论:

“如果我们可以从假设断定某种颜色的帽子一定会在队列中出现,从队尾数起第一个看不见这种颜色的帽子的人就立刻可以根据和此论证相同的论证来作出判断,他戴的是这种颜色的帽子。现在所有我身后的人都回答不知道,所以我身后的人也看见了此种颜色的帽子。如果在我前面我见不到此颜色的帽子,那么一定是我戴着这种颜色的帽子。”

当然第一个人的初始推理相当简单:“队列中一定有人戴这种颜色的帽子,现在我看不见前面有人戴这颜色的帽子,那它只能是戴在我的头上了。”

对于题1)事情就变得很明显,3顶红帽子,4顶黑帽子,5顶白帽子给10个人戴,队列中每种颜色至少都该有一顶,于是从队尾数起第一个看不见某种颜色的帽子的人就能够断定他自己戴着这种颜色的帽子,通过这点我们也可以看到,最多问到从队首数起的第三人时,就应该有人回答“知道”了,因为从队首数起的第三人最多只能看见两顶帽子,所以最多看见两种颜色,如果他后面的人都回答“不知道”,那么他前面一定有两种颜色的帽子,而他头上戴的一定是他看不见的那种颜色的帽子。

题2)也一样,3顶红帽子,4顶黑帽子,5顶白帽子给8个人戴,那么队列中一定至少有一顶白帽子,因为其它颜色加起来一共才7顶,所以队列中一定会有人回答“知道”。

题4)的规模大了一点,但是道理和2)完全一样。100种颜色的5050顶帽子给5000人戴,前面99种颜色的帽子数量是1+……+99=4950,所以队列中一定有第100种颜色的帽子(至少有50顶),所以如果自己身后的人都回答“不知道”,那么那个看不见颜色100帽子的人就可以断定自己戴着这种颜色的帽子。

至于5)、6)“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”以及“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,原理完全相同,我就不具体分析了。

最后要指出的一点是,上面我们只是论证了,如果我们可以根据各种颜色帽子的数量和队列中的人数判断出在队列中至少有一顶某种颜色的帽子,那么一定有一人可以判断出自己头上的帽子的颜色。因为如果所有身后的人都回答“不知道”的话,那个从队尾数起第一个看不见这种颜色的帽子的人就可以判断自己戴了此颜色的帽子。但是这并不是说在询问中一定是由他来回答“知道”的,因为还可能有其他的方法来判断自己头上帽子的颜色。比如说在题2)中,如果队列如下:(箭头表示队列中人脸朝的方向)

白白黑黑黑黑红红红白→

那么在队尾第一人就立刻可以回答他头上的是白帽,因为他看见了所有的3顶红帽子和4顶黑帽子,能留给他自己戴的只能是白帽子了

3、本题可用递归算法,但时间复杂度为2的n次方,也可以用动态规划法,时间复杂度为n的平方,实现起来相对要简单得多,但最方便的就是直接运用公式:排队的种数=(2n)!/[n!(n+1)!]。

如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数),对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种的排队方法有(2n)!/[(n-1)!(n+1)!](从2n个人中取出n-1个人的组合数)种,所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至于为什么不合格数是(2n)!/[(n-1)!(n+1)!],说起来太复杂,这里就不讲了。

http://hiall.com.cn/bbs/viewthread.php?tid=204371
第 31 68 14题

【14】有2n个人排队进电影院,票价是50美分。在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子)。愚蠢的电影院开始卖票时1分钱也没有。问:有多少种排队方法使得每当一个拥有1美元买票时,电影院都有50美分找钱
注:1美元=100美分拥有1美元的人,拥有的是纸币,没法破成2个50美分

本题可用递归算法,但时间复杂度为2的n次方,也可以用动态规划法,时间复杂度为n的平方,实现起来相对要简单得多,但最方便的就是直接运用公式:排队的种数=(2n)!/[n!(n+1)!]。
如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数),对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种的排队方法有(2n)!/[(n-1)!(n+1)!](从2n个人中取出n-1个人的组合数)种,所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至于为什么不合格数是(2n)!/[(n-1)!(n+1)!],说起来太复杂,这里就不讲了。

【31】共有三类药,分别重1g,2g,3g,放到若干个瓶子中,现在能确定每个瓶子中只有其中一种药,且每瓶中的药片足够多,能只称一次就知道各个瓶子中都是盛的哪类药吗?如果有4类药呢?5类呢?N类呢(N可数)?如果是共有m个瓶子盛着n类药呢(m,n为正整数,药的质量各不相同但各种药的质量已知)?你能只称一次就知道每瓶的药是什么吗?
注:当然是有代价的,称过的药我们就不用了
第一个瓶子拿出一片,第二个瓶子拿出四片,第三个拿出十六片,……第m个拿出n+1的m-1次方片。把所有这些药片放在一起称重量。

【68】有3顶红帽子,4顶黑帽子,5顶白帽子。让10个人从矮到高站成一队,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面9个人头上帽子的颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。假设最前面那个人一定会知道自己戴的是黑帽子。为什么?
“有3顶黑帽子,2顶白帽子。让三个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,却只能看见站在前面那些人的帽子颜色。(所以最后一个人可以看见前面两个人头上帽子的颜色,中间那个人看得见前面那个人的帽子颜色但看不见在他后面那个人的帽子颜色,而最前面那个人谁的帽子都看不见。现在从最后那个人开始,问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。事实上他们三个戴的都是黑帽子,那么最前面那个人一定会知道自己戴的是黑帽子。为什么?”
答案是,最前面的那个人听见后面两个人都说了“不知道”,他假设自己戴的是白帽子,于是中间那个人就看见他戴的白帽子。那么中间那个人会作如下推理:“假设我戴了白帽子,那么最后那个人就会看见前面两顶白帽子,但总共只有两顶白帽子,他就应该明白他自己戴的是黑帽子,现在他说不知道,就说明我戴了白帽子这个假定是错的,所以我戴了黑帽子。”问题是中间那人也说不知道,所以最前面那个人知道自己戴白帽子的假定是错的,所以他推断出自己戴了黑帽子。
我们把这个问题推广成如下的形式:
“有若干种颜色的帽子,每种若干顶。假设有若干个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,而且每个人都看得见在他前面所有人头上帽子的颜色,却看不见在他后面任何人头上帽子的颜色。现在从最后那个人开始,
问他是不是知道自己戴的帽子颜色,如果他回答说不知道,就继续问他前面那个人。一直往前问,那么一定有一个人知道自己所戴的帽子颜色。”
当然要假设一些条件:
1)首先,帽子的总数一定要大于人数,否则帽子都不够戴。
2)“有若干种颜色的帽子,每种若干顶,有若干人”这个信息是队列中所有人都事先知道的,而且所有人都知道所有人都知道此事,所有人都知道所有人都知道所有人都知道此事,等等等等。但在这个条件中的“若干”不一定非要具体一一给出数字来。
这个信息具体地可以是象上面经典的形式,列举出每种颜色帽子的数目“有3顶黑帽子,2顶白帽子,3个人”,也可以是“有红黄绿三种颜色的帽子各1顶2顶3 顶,但具体不知道哪种颜色是几顶,有6个人”,甚至连具体人数也可以不知道,“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,这时候那个排在最后的人并不知道自己排在最后——直到开始问他时发现在他回答前没有别人被问到,他才知道他在最后。在这个帖子接下去的部分当我出题的时候我将只写出“有若干种颜色的帽子,每种若干顶,有若干人”这个预设条件,因为这部分确定了,题目也就确定了。
3)剩下的没有戴在大家头上的帽子当然都被藏起来了,队伍里的人谁都不知道都剩下些什么帽子。
4)所有人都不是色盲,不但不是,而且只要两种颜色不同,他们就能分别出来。当然他们的视力也很好,能看到前方任意远的地方。他们极其聪明,逻辑推理是极好的。总而言之,只要理论上根据逻辑推导得出来,他们就一定推导得出来。相反地如果他们推不出自己头上帽子的颜色,任何人都不会试图去猜或者作弊偷看—— 不知为不知。
5)后面的人不能和前面的人说悄悄话或者打暗号。
当然,不是所有的预设条件都能给出一个合理的题目。比如有99顶黑帽子,99顶白帽子,2个人,无论怎么戴,都不可能有人知道自己头上帽子的颜色。另外,只要不是只有一种颜色的帽子,在只由一个人组成的队伍里,这个人也是不可能说出自己帽子的颜色的。
但是下面这几题是合理的题目:
1)3顶红帽子,4顶黑帽子,5顶白帽子,10个人。
2)3顶红帽子,4顶黑帽子,5顶白帽子,8个人。
3)n顶黑帽子,n-1顶白帽子,n个人(n>0)。
4)1顶颜色1的帽子,2顶颜色2的帽子,……,99顶颜色99的帽子,100顶颜色100的帽子,共5000个人。
5)有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人。
6)有不知多少人(至少两人)排成一排,有黑白两种帽子,每种帽子的数目都比人数少1。
大家可以先不看我下面的分析,试着做做这几题。
如果按照上面3顶黑帽2顶白帽时的推理方法去做,那么10个人就可以把我们累死,别说5000个人了。但是3)中的n是个抽象的数,考虑一下怎么解决这个问题,对解决一般的问题大有好处。
假设现在n个人都已经戴好了帽子,问排在最后的那一个人他头上的帽子是什么颜色,什么时候他会回答“知道”?很显然,只有在他看见前面n-1个人都戴着白帽时才可能,因为这时所有的n-1顶白帽都已用光,在他自己的脑袋上只能顶着黑帽子,只要前面有一顶黑帽子,那么他就无法排除自己头上是黑帽子的可能 ——即使他看见前面所有人都是黑帽,他还是有可能戴着第n顶黑帽。
现在假设最后那个人的回答是“不知道”,那么轮到问倒数第二人。根据最后面那位的回答,他能推断出什么呢?如果他看见的都是白帽,那么他立刻可以推断出自己戴的是黑帽——要是他也戴着白帽,那么最后那人应该看见一片白帽,问到他时他就该回答“知道”了。但是如果倒数第二人看见前面至少有一顶黑帽,他就无法作出判断——他有可能戴着白帽,但是他前面的那些黑帽使得最后那人无法回答“知道”;他自然也有可能戴着黑帽。
这样的推理可以继续下去,但是我们已经看出了苗头。最后那个人可以回答“知道”当且仅当他看见的全是白帽,所以他回答“不知道”当且仅当他至少看见了一顶黑帽。这就是所有帽子颜色问题的关键!
如果最后一个人回答“不知道”,那么他至少看见了一顶黑帽,所以如果倒数第二人看见的都是白帽,那么最后那个人看见的至少一顶黑帽在哪里呢?不会在别处,只能在倒数第二人自己的头上。这样的推理继续下去,对于队列中的每一个人来说就成了:
“在我后面的所有人都看见了至少一顶黑帽,否则的话他们就会按照相同的判断断定自己戴的是黑帽,所以如果我看见前面的人戴的全是白帽的话,我头上一定戴着我身后那个人看见的那顶黑帽。”
我们知道最前面的那个人什么帽子都看不见,就不用说看见黑帽了,所以如果他身后的所有人都回答说“不知道”,那么按照上面的推理,他可以确定自己戴的是黑帽,因为他身后的人必定看见了一顶黑帽——只能是第一个人他自己头上的那顶。事实上很明显,第一个说出自己头上是什么颜色帽子的那个人,就是从队首数起的第一个戴黑帽子的人,也就是那个从队尾数起第一个看见前面所有人都戴白帽子的人。
这样的推理也许让人觉得有点循环论证的味道,因为上面那段推理中包含了“如果别人也使用相同的推理”这样的意思,在逻辑上这样的自指式命题有点危险。但是其实这里没有循环论证,这是类似数学归纳法的推理,每个人的推理都建立在他后面那些人的推理上,而对于最后一个人来说,他的身后没有人,所以他的推理不依赖于其他人的推理就可以成立,是归纳中的第一个推理。稍微思考一下,我们就可以把上面的论证改得适合于任何多种颜色的推论:
“如果我们可以从假设断定某种颜色的帽子一定会在队列中出现,从队尾数起第一个看不见这种颜色的帽子的人就立刻可以根据和此论证相同的论证来作出判断,他戴的是这种颜色的帽子。现在所有我身后的人都回答不知道,所以我身后的人也看见了此种颜色的帽子。如果在我前面我见不到此颜色的帽子,那么一定是我戴着这种颜色的帽子。”
当然第一个人的初始推理相当简单:“队列中一定有人戴这种颜色的帽子,现在我看不见前面有人戴这颜色的帽子,那它只能是戴在我的头上了。”
对于题1)事情就变得很明显,3顶红帽子,4顶黑帽子,5顶白帽子给10个人戴,队列中每种颜色至少都该有一顶,于是从队尾数起第一个看不见某种颜色的帽子的人就能够断定他自己戴着这种颜色的帽子,通过这点我们也可以看到,最多问到从队首数起的第三人时,就应该有人回答“知道”了,因为从队首数起的第三人最多只能看见两顶帽子,所以最多看见两种颜色,如果他后面的人都回答“不知道”,那么他前面一定有两种颜色的帽子,而他头上戴的一定是他看不见的那种颜色的帽子。
题2)也一样,3顶红帽子,4顶黑帽子,5顶白帽子给8个人戴,那么队列中一定至少有一顶白帽子,因为其它颜色加起来一共才7顶,所以队列中一定会有人回答“知道”。
题4)的规模大了一点,但是道理和2)完全一样。100种颜色的5050顶帽子给5000人戴,前面99种颜色的帽子数量是 1+……+99=4950,所以队列中一定有第100种颜色的帽子(至少有50顶),所以如果自己身后的人都回答“不知道”,那么那个看不见颜色100帽子的人就可以断定自己戴着这种颜色的帽子。
至于5)、6)“有红黄绿三种颜色的帽子各1顶2顶3顶,但具体不知道哪种颜色是几顶,有6个人”以及“有不知多少人排成一排,有黑白两种帽子,每种帽子的数目都比人数少1”,原理完全相同,我就不具体分析了。
最后要指出的一点是,上面我们只是论证了,如果我们可以根据各种颜色帽子的数量和队列中的人数判断出在队列中至少有一顶某种颜色的帽子,那么一定有一人可以判断出自己头上的帽子的颜色。因为如果所有身后的人都回答“不知道”的话,那个从队尾数起第一个看不见这种颜色的帽子的人就可以判断自己戴了此颜色的帽子。但是这并不是说在询问中一定是由他来回答“知道”的,因为还可能有其他的方法来判断自己头上帽子的颜色。比如说在题2)中,如果队列如下:(箭头表示队列中人脸朝的方向)
白白黑黑黑黑红红红白→
那么在队尾第一人就立刻可以回答他头上的是白帽,因为他看见了所有的3顶红帽子和4顶黑帽子,能留给他自己戴的只能是白帽子了

第一题: 第一个瓶子拿出一片,第二个瓶子拿出四片,第三个拿出十六片,……第m个拿出n+1的m-1次方片。把所有这些药片放在一起称重量。

第二题:
(1)分析第10个人的情况。
第10个人说不知道,那么说明前面9个人不可能出现红3黑4,红3白5,黑4白5的情况,即三种颜色的球,不可能两种全部出现,不然的话,第10个人马上可以知道自己是剩下来的那种颜色。
那么,前面9个人,只可能是红2黑3白4,红3黑2白4,红3黑3白3,红2黑4白3,红2黑4白3,红1黑4白4,红1黑3白5,红2黑2白5这7种情况。

(2)分析第9个人的情况。
前面7种情况,每种情况可以分为3种,比如红2黑3白4,第9个人是红的情况,那么其他8个人就是红1黑3白4;如果第9个人是黑,那么前面8个人就是红2黑2白4;如果第9个人是白,那么前面8个人就是红2黑3白3。然后对于7种情况都进行这样的操作,那么理论上就是7*3=21种情况。但很快会发现,红1黑4白4和红1黑3白5的场合,第9个人不可能是红色的,因为如果他是红色的,那么他马上就可以推断出自己不可能是黑或者白(不然第10个人不会说不知道),所以说,当他看到前面8个人是黑4白4或者黑3白5后,马上可以知道是红色的。现在题目要求是他不知道自己的颜色,所以,红1黑4白4只可能推出红1黑4白3或者红1黑3白4,同理,红1黑3白5只可能推出红1黑2白5或者红1黑3白4。因此,在第9个人说不知道的情况下,前面8个人只可能内是红1黑3白4,红2黑2白4,红2黑3白3,红3黑1白4,红3黑2白3,红3黑3白2,红1黑4白3,红2黑4白2,红1黑2白5,红2黑1白5,这10种情况(很多相同的情况都合并掉了。)

(3)分析第8个人的情况,第8个人同样道理,如果要让他说不知道,那么红1黑3白4的时候,他不可能是那个唯一的红;红3黑1白4的时候,他不可能是唯一的那个黑;红1黑4白3的时候,他不可能是唯一的那个红;红2黑1白5的时候,他不可能是唯一的那个黑。

(4)分析第7个人的情况。
同样道理,在第8,,9,10都不知道自己的颜色的情况下,7个人的场合,只可能是红1黑2白4,红1黑3白3,红2黑1白4,红2黑2白3,红2黑3白2,红3黑1白3,红3黑3白1,红1黑4白2,红1黑1白5,这9种情况。

(5)现在规律很明显了,通俗地讲,每次到1就停住不再相减了,那么最后必然会收拢到红1黑1白1的场合,也就是说,第1,2,3个人,必然是红,黑,白各1个,如果不是这个样子的话,那么后面4-10个人,肯定会有人能推理出自己帽子的颜色。第3个人,只要看第1个人,第2个人帽子的颜色,就会知道自己帽子的颜色,然后假设他说出来了,第2个人听到第3个人帽子的颜色,再看到第1个人的帽子,就能知道自己帽子的颜色,也假设他说出来,那么第1个人就可以知道自己帽子是什么颜色的了。想要他是黑的,那么2,3必定是1红1白。
整个10个人可能是这样的。
黑红白 黑红白 黑红白 黑或白
黑白红 黑白红 黑白红 黑或白

第三题:
本题可用递归算法,但时间复杂度为2的n次方,也可以用动态规划法,时间复杂度为n的平方,实现起来相对要简单得多,但最方便的就是直接运用公式:排队的种数=(2n)!/[n!(n+1)!]。如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数),对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种的排队方法有(2n)!/[(n-1)!(n+1)!](从2n个人中取出n-1个人的组合数)种,所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至于为什么不合格数是(2n)!/[(n-1)!(n+1)!],说起来太复杂,这里就不讲了。

第一题中的只称一次是什么概念?
将任意两种药分别放半瓶在托盘两边,先观察哪边更重,再将另外一瓶向较轻的一边放半瓶,此刻观察是否平衡(可能性1)。最后将先前较重的一侧剩余半瓶加上。结果就可以看出来了。
可能性:
轻 重
1、0.5+1 1.5+1.5
2、0.5+1.5 1+1
3、1+0.5 1.5+1.5


几个逻辑题 差不多是数学题视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网