递归--过河、分金币、寄信问题(范围)

1。过河

背景:一条河里有鳄鱼,鳄鱼可以吃河里任何虚弱的生物,鳄鱼吃掉任何一个生物后都会变虚弱,鳄鱼非常聪明。当有一个人过河时,

假设:1)河里只有一条鳄鱼,那么人过河时会被鳄鱼吃掉。

          2)河里只有2条鳄鱼,那么人可以安全过河,因为如果其中一条鳄鱼吃掉人后会变虚弱,从而将会被另一条鳄鱼吃掉。鳄鱼们非常聪明,这时都不会吃人

          3)河里只有3条鳄鱼,那么人过河时会被吃掉。因为,其中任何一条鳄鱼吃掉人后,另外两条鳄鱼不敢吃掉这条鳄鱼。

问:人在什么情况下可以安全过河?

        河里的鳄鱼时双数时。

2.海盗分金币

 背景:有n个海盗准备分m个金币,每个海盗都有自己的编号,可以按照编号1~n的顺序提出自己分金币的计划,

   当自己的计划提出后只有获得超过半数以上的人支持才能被实施,否则将会被处死,海盗可以投1票给自己

   的方案。

假设海盗们都非常聪明:问编号为1的海盗如何能活着获得最多的金币?

  1)当只有一个海盗时,这个海盗能获得m个金币;

  2)当只有2个海盗时(编号为1,2),那么无论编号1提出什么方案,其都会被处死(编号2的海盗肯定不会支持编号1,因此支持人数不超过半数)

       3)当只有3个海盗时(编号为1、2、3),那么根据2)可知,编号2会无条件支持编号1提出方案,因为编号1的方案一旦被否决,编号2的方案一定会被否决。

             所以编号1提出的任何方案都一定会获得2票。因此,编号1可以独占m个金币,此时编号2、3获得的金币分别为0、0。   

       4)当只有4个海盗时(编号为1、2、3、4),由3)可知当编号1的方案被否决后,编号3、4只能获得0个金币,因此,只要编号1能给编号3、4各一个金币,

   那么编号3、4就一定会支持编号1的方案。因此编号1可以获得m-2个金币。编号2、3、4分别获得0、1、1个金币。

       5)当只有5个海盗时(编号为1、2、3、4、5),由4)可知,只要编号1能给编号3一个金币、编号4两个金币,就一定能获得3票;或给编号3一个金币、编号5两个

            金币,那么也能获得3票。此时编号1能拿到最多m-3个金币,此时金币分配方案为:m-3、0、1、2、0或m-3、0、1、0、2

       6)。。。

3)寄信问题

  背景:假设村里的人相互寄信,自己只能寄一次信且不能寄信给自己,而且只能收一次信。

  问:当村里有n个人时,有多少种寄信方式?

  1)当村里只有0或1个人时有0种寄信方式

   2)当村里只有2个人时,只有1种寄信方式 a->b,b->a;

   3)当村里只有3个人时,只有2种寄信方式:a->b,b->c,c->a 或 a->c,c->b,b->a;

   4)  当村里只有4个人(a、b、c、d)时,假设1)a->b,b->a,此时有 f(4-2)种方式 ;2)a->b,b不传给a,此时可以将 (a->b)看作一个人(可以寄信和收信),这时有f(4-1)种方式

       3)因为a寄信有3个选择(寄给b、c或d),因此总的寄信方式有 (4-1)*(f(4-1)+f(4-2));

   。。。

  n)当村里有n个人时,f(n) = (n-1)*(f(n-1)+f(n-2));

原文地址:https://www.cnblogs.com/indifferent/p/14399541.html