五人分鱼

/*

5.A/B/C/D/E 5个人在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉,第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。C/D/E依次醒来,按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?

假设

fun(1)

fun(2) = ((fun(1) - 1) / 5) * 4 // 隐含 (fun(1) - 1) % 5 == 0

fun(3) = ((fun(2) - 1) / 5) * 4 // 隐含 (fun(2) - 1) % 5 == 0

fun(4) = ((fun(3) - 1) / 5) * 4 // 隐含 (fun(3) - 1) % 5 == 0

fun(5) = ((fun(4) - 1) / 5) * 4 // 隐含 (fun(4) - 1) % 5 == 0

fun(6) = ((fun(5) - 1) / 5) * 4 // 隐含 (fun(5) - 1) % 5 == 0

*/


/*  自己尝试完善了分鱼的方法,(其实是两个人分的时候结果对不上= =),  totalFish 要定义成person+1比较准确,然后后面能否分鱼判断的时候要加上一个条件:    剩下的鱼扔掉一条后要足够分人份,即:leftFish - 1 >= person*/ 1 #include <stdio.h>
 2 int shareFish(int person){
 3     //假设捕鱼6条(即是第一次分鱼至少要几条鱼)
 4     int totalFish = person+1;
 5     //计数器,往上叠加鱼的数目直至条件成立
 6     for (int i = totalFish; 1; i++) {
 7         //记录剩下的鱼数
 8         int leftFish = i;
 9         //假设找到了这个数字
10         int isFind = 1;
11         //分五次鱼
12         for (int j = 0; j < person; j++) {
13             //尝试能否分出鱼,鱼至少要够人份
14             if ((leftFish - 1 ) % person == 0 && leftFish - 1 >= person) {
15                 //计算分鱼之后的鱼数目
16                 leftFish = (( leftFish - 1 ) / person ) * ( person - 1 );
17             }else{
18                 //如果不能分就跳出循环(表示没找到)
19                 isFind = 0;
20                 break;
21             }
22         }
23         //如果可以分就跳出循环
24         if (isFind) {
25             totalFish = i;
26            // printf("%d",i);
27             break;
28         }
29     }
30     return totalFish;
31 }
32
33 int main(){
34     //五个人分鱼,呵呵,把‘5‘改掉想几个人就几个人分!
35     int total = shareFish(5);
36     printf("%d",total);
37     return 0;
38 }
时间: 2024-08-05 10:49:38

五人分鱼的相关文章

递归解决分鱼问题

问题: 5个人夜间捕鱼,早上A先醒来,将鱼分为5份,将多的一条扔进海里,然后B醒来,不知道A已经拿走一份鱼,就将剩下的鱼分成5份,扔掉多余的一条,接着C,D,E醒来,按同样的方法分鱼,问这5个人合伙捕到多少条鱼,每个人醒来后所看到多少条鱼. #include <stdio.h> #include <stdlib.h> int fish(int n, int x); /* run this program using the console pauser or add your ow

分鱼问题

A.B.C.D.E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉.日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份.B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份.C.D.E依次醒来,也按同样的方法拿走鱼.问他们合伙至少捕了多少条鱼? 1 #include <iostream> 2 using namespace std; 3 4 bool fun1(int n, int count) 5 { 6 if (0 == cou

软件工程之“五人黑”团队开发章程

“五人黑”小组团队开发章程 一.团队目标 1)在规定时间内完成项目(团委微信平台)的开发和测试工作,且完成时间尽量早. 2)保证完成的项目是高质量的,即:软件拥有较好的易操作性.用户友好性:代码具有较好的健壮性.可维护性. 3) 每位小组成员都能在项目开发中学习到实用的开发技术,并能对软件工程有所体会. 二.团队守则 1)每位团队成员应积极主动完成好自己的任务,不拖延项目的进度.如实在因任务过于繁忙需要调整进度,可与团队进行协商. 2)每位团队成员在开发过程中都应严格遵守团队协商制定的代码规范,

五猴分桃通解公式-敬献给诺贝尔奖获得者李政道博士

摘要:"五猴分桃问题"是一个中.外非常有名的趣味数学难题.研究这种类型题的简易计算方法曾困扰住了一些大物理学家和数学家.李政道博士在中国科技大学讲学时也特意提到此题, 本文通过对该问题的分析,推导出了能求解所有这种类型题的最简易通解公式 y=a(a/m)n-1-db/c,以及它的姊妹公式: y=[ka(a/m)n-1-db]/c,以及这两个公式有解和无解的条件,使这个问题得到了较园满的解决. Summary: "Five monkey peach assignment pro

TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔

根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的

用蒙特卡罗方法计算五人传球问题

蒙特卡罗方法百度解释http://baike.baidu.com/link?url=XwVnK6P_gip61_P9RzC9u6T4KQP5hmoZIvx57XBM66hPBONRRl3-yAwldGr3orFe 问题描述: 有A B C D E 五个人,围成一圈,开始球在A的手上,然后由A向与自己相邻的两边的某一人传球,然后要求计算球被传十次,最后又回到A手中的概率. 如上图所示,A只能把球传给B或者E,其几率是相同的. 对每个人来说把球传给左边或者右边的人的几率都是相同的,且为1/2: 这样

五人预测比赛结果均答对一半,求比赛名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三. B选手说:我第二,E第四. C选手说:我第一,D第二. D选手说:C最后,我第三. E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 此题没说没有并列情况,所以我们要考虑到并列第几的情况,也要考虑到跨名次情况(即没有1就有2.3.4.5等).首先假设D选手说的"C最后"认为为C是第五,然后对于存在并列第几情况的问题,引进二进制.通过将1(0001)移位,再与0(00

JVM调优总结(五)-分代垃圾回收详述1

为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象.线程.Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长.但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周期会比较短,比如:String对象,由于其不变类的特性,系统会产生大量的这些对象,有些对象甚至

40斤西瓜3人分,求分法

该题最核心的思路是西瓜一共40斤,只要3个人分到的西瓜斤数总和等于40即可,所以,即有如下解决方法: <?php $aa = range(1,40); $bb = array(); foreach($aa as $k=>$val){   foreach($aa as $v){     foreach($aa as $vl){       $sum = $val+$v+$vl;       if($sum == 40){         $bb[$k][0] = $val;         $b