算法-经典趣题-渔夫捕鱼
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/76
一、问题
渔夫捕鱼问题是一个典型的递推问题,渔夫捕鱼问题的大意如下:
某天晚上,A、B、C、D、E 5个渔夫合伙捕鱼,捕到一定数量之后便停止捕鱼,各自到岸边休息。第二天早晨,渔夫A第一个醒来,他将鱼分作5份,把多余的一条扔回河中,拿其中自己的一份回家去了。渔夫B第二个醒来,也将鱼分作5份,扔掉多余的一条,拿走自己的一份。渔夫C第三个醒来,也将鱼分作5份,扔掉多余的一条,拿走自己的一份。渔夫D第四个醒来,也将鱼分作5份,扔掉多余的一条,拿走自己的一份。渔夫E第五个醒来,也将鱼分作5份,扔掉多余的一条,拿走自己的一份。问5个渔夫至少捕到多少条鱼呢?
二、问题分析
先来分析一下渔夫捕鱼问题。这里,每个渔夫醒来的时候,鱼的数量都应该是5的倍数再加1。为了保证所有的渔夫都可以按照上述方法来分鱼。
那么最后一个渔夫E醒来之后,鱼的数量至少应该为6。在他扔掉一条鱼之后,仍然可以平均分为5份。
那么渔夫D醒来的时候,鱼的数量应该为6×5+1=31;
渔夫C醒来的时候,鱼的数量应该为31×5+1=156;
渔夫B醒来的时候,鱼的数量应该为156×5+1=781;
渔夫A醒来的时候,鱼的数量应该为781×5+1=3906;
这是一个明显的递推的式子,递推公式如下:
Sn-1=5Sn+1
三、编程
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/76