python实现递推算法解决分鱼问题
一、问题描述
A、B、C、D、E5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5个人至少合伙捕到多少条鱼?每个人醒来后所看到的鱼是多少条?
二、问题分析
假设E分鱼前鱼的总数为6条、11条、16条……则对应E的每次取值都可以将其他4个人分鱼前鱼的总数递推出来。每个人分鱼前,鱼的总数%5都必须为1,且B、C、D、E分鱼前鱼的总数%4必须为0,即每次剩余的鱼必须能够均分成4份
三、算法设计
定义数组fish[6]来保存每个人分鱼前鱼的总条数,A、B、C、D、E分鱼前鱼的总条数分别存放在fish数组下标为1、2、3、4、5的元素中。相邻两人看到的鱼的条数存在如下关系:
fish[1]=全部的鱼
fish[2]=(fish[1]-1) // 5 * 4
fish[3]=(fish[2]-1) // 5 * 4
fish[4]=(fish[3]-1) // 5 * 4
fish[5]=(fish[4]-1) // 5 * 4
得到表达式:
fish[n]=(fish[n-1]-1) // 5 * 4
则:
fish[n-1]=fish[n]*5 // 4 + 1
四、完整程序
#!/usr/bin/env python3
# -*- coding: utf-8 -*-if __name__ == "__main__":# fish[6]存放每个人分鱼前的总条数# A、B、C、D、E分鱼前鱼的总条数分别存放在fish数组下标为1、2、3、4、5的元素中fish = [0] * 6fish[5] = 6while True:i = 4while i > 0:if fish[i + 1] % 4 != 0:break# 递推关系式fish[i] = fish[i + 1] * 5 // 4 + 1if fish[i] % 5 != 1:breaki -= 1if i == 0:breakfish[5] += 5for i in range(1, 6):# 输出结果print("fish[%d] = %d " % (i, fish[i]))
五、运行结果
相关文章:
![](https://img-blog.csdnimg.cn/feb48fa22c324b928995f6d8a2103d18.png)
python实现递推算法解决分鱼问题
一、问题描述 A、B、C、D、E5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家…...
![](https://img-blog.csdnimg.cn/img_convert/f4c4bb87ef12a99ac6f9f6b5cd5f3636.png)
【LeetCode】142.环形链表Ⅱ
题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部…...
![](https://img-blog.csdnimg.cn/img_convert/cc2de8fe7bfe240e1669331c88d03651.png?x-oss-process=image/watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfMTIy,g_se,x_0,y_0,t_100)
16.Netty源码之ChannelPipeline
highlight: arduino-light 服务编排层:ChannelPipeline协调ChannelHandlerHandler EventLoop可以说是 Netty 的调度中心,负责监听多种事件类型:I/O 事件、信号事件、定时事件等,然而实际的业务处理逻辑则是由 ChannelPipeline 中所定义的 Cha…...
![](https://www.ngui.cc/images/no-images.jpg)
“使用Spring Boot构建微服务应用的最佳实践“
标题:使用Spring Boot构建微服务应用的最佳实践 摘要:本文将介绍如何使用Spring Boot构建微服务应用的最佳实践。我们将讨论微服务架构的概念、Spring Boot的优势以及一些最佳实践,同时提供示例代码帮助读者更好地理解和实践。 正文&#x…...
![](https://img-blog.csdnimg.cn/e337b60ed4934656aba5dab2f40d169c.png)
redis高可用之主从复制,哨兵,集群
目录 前言 一、主从复制 1、主从复制的作用 2、主从复制流程 3、部署Redis 主从复制步骤 3.1 环境准备 3.3 修改Redis 配置文件(Master节点操作) 3.4 修改Redis 配置文件(Slave节点操作) 3.5 验证主从效果 二、哨兵 1、哨兵模式原理 2、哨兵模式…...
![](https://img-blog.csdnimg.cn/4d4c3ebff298452b90b5d16e23b8d011.png)
【Ajax】笔记-原生jsonp跨域请求案例
原生jsonp跨域请求 输入框:输入后,鼠标移开向服务端发送请求,返回用户不存在(直接返回不存在,不做判断) JS <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…...
![](https://img-blog.csdnimg.cn/a27f4dc3d3d9402cabb54d532c2e74e7.png)
QT--day2(信号与槽,多界面跳转)
第一个界面头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QIcon> //图标头文件 #include <QPushButton> //按钮类头文件QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public…...
![](https://img-blog.csdnimg.cn/img_convert/e10868be9dccda8266fdff82e0fa201e.png)
热备份路由协议原理
热备份路由协议原理 HSRP协议/VRRP协议热备份协议 热备份协议(Hot Standby Protocol) 是一种基于冗余设计的协议,用于提高网络的可靠性和冗余性。它允许多个设备共享同一个IP地址,其中一个设备被选为主设备,其他设备…...
![](https://www.ngui.cc/images/no-images.jpg)
模拟实现定时器
关于java标准库中的定时器的使用可以看定时器Timer的使用 大致思路 定义一个MyTimeTask类,该类用于组织要执行任务的内容以及执行任务的时间戳,后面要根据当前系统时间以及执行任务的时间戳进行比较,来判断是否要执行任务或是要等待任务 用一…...
![](https://www.ngui.cc/images/no-images.jpg)
TCP/IP的分包粘包
TCP/IP的分包粘包 分包粘包介绍导致分包粘包的原因导致TCP粘包的原因:导致TCP分包的原因:避免分包粘包的措施 分包粘包介绍 因为TCP为了减少额外开销,采取的是流式传输,所以接收端在一次接收的时候有可能一次接收多个包。而TCP粘…...
![](https://img-blog.csdnimg.cn/4960bd5766d544798921d149c4f93ced.jpeg)
盘点:查快递教程
在“寄快递”成为常态的当下,如何快速进行物流信息查询,是收寄人所关心的问题。在回答这个问题之前,首先我们要知道,物流信息查询,有哪些方法? 1、官网单号查询 知道物流公司和单号的情况下,直…...
![](https://oscimg.oschina.net/oscnet/up-a740e324e78757c2d01487caa238bbc104c.png)
TransGPT 开源交通大模型开源
TransGPT 是开源交通大模型,主要致力于在真实交通行业中发挥实际价值。 它能够实现交通情况预测、智能咨询助手、公共交通服务、交通规划设计、交通安全教育、协助管理、交通事故报告和分析、自动驾驶辅助系统等功能。 TransGPT 作为一个通用常识交通大模型&#…...
![](https://img-blog.csdnimg.cn/aec3b1a99a31457b94f9592bdf1b5b94.png)
gitignore文件使用方法(gitignore教程)(git status --ignored)(git check-ignore -v <file>)
文章目录 Gitignore文件使用描述Gitignore基本语法1. 基本语法★★★★★2. 配置方法 匹配示例示例1示例2示例3 其他命令git status --ignored(用于显示被Git忽略的文件和文件夹的状态)git check-ignore -v <file>(用于检查指定文件是否…...
![](https://www.ngui.cc/images/no-images.jpg)
mybatis拼接sql导致的oom报错 GC报错
报错1:mybatis拼接过多 java.lang.OutOfMemoryError: GC overhead limit exceeded 具体报错: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ew.sqlSegment ! null and ew.sqlSegment ! and ew.non…...
![](https://img-blog.csdnimg.cn/img_convert/ee0834084aa36aab3169977c2c2af524.png)
如何通俗理解扩散模型?
扩散模型(Diffusion Model)是一类十分先进的基于扩散思想的深度学习生 成模型。生成模型除了扩散模型之外,还有出现较早的 VAE ( Variational Auto- Encoder,变分自编码器) 和 GAN ( Generative Adversarial Net ,生成对抗网络) 等。 虽然它们…...
【C#】并行编程实战:并行编程中的模式
本章将介绍并行编程模式,重点是理解并行代码问题场景并使用并行编程/异步技术解决他们。本章会介绍几种最重要的编程模式。 本教程学习工程:魔术师Dix / HandsOnParallelProgramming GitCode 1、MapReduce 模式 引入 MapReduce 是为了解决处理大数据的问…...
![](https://www.ngui.cc/images/no-images.jpg)
Apache Kafka 入门教程
Apache Kafka 入门教程 一、简介简介架构 二、Kafka 安装和配置JDK安装 Kafka配置文件详解 三、Kafka 的基本操作启动和关闭Topic 创建和删除Partitions 和 Replication 配置Producer 和 Consumer 使用方法ProducerConsumer 四、Kafka 高级应用消息的可靠性保证Kafka StreamKaf…...
![](https://img-blog.csdnimg.cn/img_convert/ec2e9b44f21100ea91ea7e48e7e51a07.jpeg)
python皮卡丘编程代码教程,用python打印皮卡丘
大家好,小编来为大家解答以下问题,如何用print函数打印一只皮卡丘,用python如何打印丘比特之心,现在让我们一起来看看吧!...
![](https://img-blog.csdnimg.cn/4c39daaac4e44a36985054b5532f00cb.png)
shell脚本:数据库的分库分表
#!/bin/bash ######################### #File name:db_fen.sh #Version:v1.0 #Email:admintest.com #Created time:2023-07-29 09:18:52 #Description: ########################## MySQL连接信息 db_user"root" db_password"RedHat123" db_cmd"-u${…...
![](https://www.ngui.cc/images/no-images.jpg)
AtCoder Beginner Contest 312(A~D)
A //语法题也要更仔细嘞,要不然也会wa #include <bits/stdc.h> // #pragma GCC optimize(3,"Ofast","inline") // #pragma GCC optimize(2) using namespace std; typedef long long LL; #define int LL typedef pair<int, int> …...
![](https://www.ngui.cc/images/no-images.jpg)
SQL中Partition的相关用法
使用Partition可以根据指定的列或表达式将数据分成多个分区。每个分区都是逻辑上独立的,可以单独进行查询、插入、更新和删除操作。Partition可以提高查询性能,因为它可以限制在特定分区上执行查询,而不是在整个表上执行。 在SQL中ÿ…...
![](https://img-blog.csdnimg.cn/f9b61e08c48b4d37a5fbf60c223d37db.png)
微服务——Docker
docker与虚拟机的区别 首先要知道三个层次 硬件层:计算机硬件 内核层:与硬件交互,提供操作硬件的指令 应用层: 系统应用封装内核指令为函数,便于程序员调用。用户程序基于系统函数库实现功能。 docker在打包的时候直接把应用层的函数库也进行打包&a…...
![](https://img-blog.csdnimg.cn/1e0b1a9ef07145b88efcab5987fe4529.png)
测试|测试用例方法篇
测试|测试用例方法篇 文章目录 测试|测试用例方法篇1.测试用例的基本要素:测试环境,操作步骤,测试数据,预期结果…2.测试用例带来的好处3.测试用例的设计思路,设计方法,具体设计方法之间的关系**设计测试用…...
![](https://www.ngui.cc/images/no-images.jpg)
负载均衡的策略有哪些? 负载均衡的三种方式?
负载均衡的策略有哪些? 负载均衡的策略有如下: 1. 轮询(Round Robin):按照请求的顺序轮流分配到不同的服务器。 2. 权重(Weighted):给不同的服务器分配不同的权重,根据权重比例来…...
![](https://img-blog.csdnimg.cn/ccd6d5b34caf4ead95b6e858d310a4f7.png)
二十三章:抗对抗性操纵的弱监督和半监督语义分割的属性解释
0.摘要 弱监督语义分割从分类器中生成像素级定位,但往往会限制其关注目标对象的一个小的区域。AdvCAM是一种图像的属性图,通过增加分类分数来进行操作。这种操作以反对抗的方式实现,沿着像素梯度的相反方向扰动图像。它迫使最初被认为不具有区…...
![](https://www.ngui.cc/images/no-images.jpg)
curator实现的zookeeper可重入锁
Curator是一个Apache开源的ZooKeeper客户端库,它提供了许多高级特性和工具类,用于简化在分布式环境中使用ZooKeeper的开发。其中之一就是可重入锁。 Curator提供了InterProcessMutex类来实现可重入锁。以下是使用Curator实现ZooKeeper可重入锁的示例&am…...
![](https://img-blog.csdnimg.cn/0e8ed9de41234cf6b41bf8cd986aeb22.png)
抽象工厂模式——产品族的创建
1、简介 1.1、简介 抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品 1.2、定义 抽象工厂模式(Abstract Factory Pattern):提供…...
![](https://img-blog.csdnimg.cn/2fa02dff54c24f75a68f419c86cf25b5.png#pic_center)
【C语言初阶篇】自定义类型结构体我不允许还有人不会!
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言1 . 什么是结构体1.1 结构的定义1.2 结构的声明 2.结构体初始化2.1 用标签名定义和初始化2.2…...
![](https://img-blog.csdnimg.cn/29b8a24fd60645dbabdded646166cd9a.jpeg)
重大更新|Sui主网即将上线流动性质押,助力资产再流通
Sui社区一直提议官方上线流动质押功能,现在通过SIP过程,已经升级该协议以实现这一功能。 Sui使用委托权益证明机制(DPoS)来选择和奖励负责运营网络的验证节点。为了保障网络安全,验证节点通过质押SUI token获得质押奖…...
![](https://www.ngui.cc/images/no-images.jpg)
day3 驱动开发 c语言编程
通过ioctl(内核应用层) 控制led灯三盏,风扇,蜂鸣器,小马达 头文件head.h #ifndef __LED_H__ #define __LED_H__typedef struct {volatile unsigned int TZCR; // 0x000volatile unsigned int res1[2]; // 0x…...
![](/images/no-images.jpg)
枣阳建设局网站首页/seo外链发布平台有哪些
ConcurrentHashMap 和 Hashtable 区别 spring IOC 和 AOP,以及各有什么优点 有哪几种常用的线程池 什么情况下使用 Runnable 和 Thread 创建线程,Runnable 和 Callable 的区别 线程方法中的异常如何处理,副线程可以捕获到吗 synchronize…...
![](/images/no-images.jpg)
枣庄市建设局网站/seo是广告投放吗
使用Java完成Excel文件的上传、内容的解析和以及保存操作。重点主要在于使用org.apache.poi包下的Workbook类完成对Excel内容的解析首先pom文件引入Apache poi,org.apache.poipoi-ooxml3.9Apache POI提供API给Java程序对Microsoft Office(Excel、Word、PowerPoint等…...
![](/images/no-images.jpg)
海南三亚做网站/小程序开发平台有哪些
Thinkphp操作当前数据库以外的数据表时,发现更新字段的时候返回0,是跨库就不没有写入权限了么?namespace Home\Model;use Think\Model;class CategoryModel extends Model {protected $trueTableName top_categories;protected $dbName top…...
![](/images/no-images.jpg)
wordpress云落主题/软文广告平台
看到很多朋友问起Eclipse插件问题,所以索性就将自己所用过的总结一下。呵呵,说是全攻略只当胀胀眼球,俺能用过的插件会有多少呀,虽然才疏学浅,为了不让自己的痛苦重复在似俺当年般的菜虫身上…… tomcatPluginV31beta…...
![](https://img-blog.csdnimg.cn/img_convert/04246fdfe8958426b043c89ded0857f1.png)
镇巴作风建设网站/营销网站建设门户
pip install cython -e git://github.com/surfly/gevent.git1.0rc2#egggevent使用技巧Gevent库性能很高,但一直以来我都纠结在python的GIL模型导致的线程不能抢占多核资源上面。而启动多个python进程的这种利用多核的模式又需要增加前端负载均衡,比如lvs…...
![](/images/no-images.jpg)
济南专业网站托管公司/百度手机版网页
例如:多个占位符格式化字符串:People {"name": "john", "age": 33}print("My name is {name},iam{age} old".format_map(People))1、定义和用法类似 str.format(*args, **kwargs) ,不同的是 mappin…...