约瑟夫环问题

约瑟夫环问题 - Python 基本问题描述: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。(也类似于变态杀人狂问题)通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。通常,我们会要求输出最后一位出列的人的序号。那么这里主要研究的是最后一个出列的人的序... 阅读详情

今天研究了约瑟夫环问题,下面做总结:

首先解释约瑟夫环问题:有一天,国王心情很好,于是从监狱放出40个死囚,并让他们围成一个圈,从第一个人开始报数,报到3的就拖出去处死,然后再由下一个重新报数,如此循环剩下最后一个人,释放,问站在哪一个位置的人可以活着。

解题思路:目前想到的方法有数组,链表集合,递归,下面将用链表集合解决。

首先应该让他们连成环,然后在剔除数到3的人,循环即可,那么怎么让他们连成环呢,我们应该设置两个变量,一个用来做指针,一个用来计数,每当循环完成一遍则把指针归零,继续循环即可,另一个计数则是记录3的倍数,为什么记录三的倍数呢,主要是解决数到三的问题,即每次数到3就可以当成3和他的倍数关系,那么就好处理多了。

public static void main(String[] args) {
        System.out.println(getNum(40,3));
    }
    public static int getNum(int num,int m) {
        List<Integer> list = new ArrayList<>();     //设置链表
        for (int i = 1; i <= num; i++) {            //添加元素到链表
            list.add(i);
        }
        int count = 1;                              //设置计数变量
        for (int i = 0; 1 != list.size(); i++) {    //循环处死,直到剩一个为止
            if (i == list.size()) {                 //每当循环完成一遍,则i置零,继续循环
                i = 0;
            }
            if (count % m == 0) {                    //当数到3的倍数,则删除
                list.remove(i);
                i--;                                 //因为remove的同时会造成后面的数会往前补齐,则指针就会漏掉一个
            }
            count++;                                 //计数
        }
        return list.get(0);                          //因为最后只剩一个所以取第一个即可
    }


17人报号,遇3及其倍数的出圈问题 17个人围成圈,顺次1-17号从第一个人开始1,2,3……报号,每报到3或3的倍数的人出圈,其余人继续报,求出圈的人的号码 立即下载

相关推荐

约瑟夫问题c语言简单程序

约瑟夫问题 c语言 code::blocks 程序比较小巧

约瑟夫环Java

如上图所示,用ArrayList和计数器可以计算出8个数字中最后剩下的幸运数字

weixin_45042435的博客 311

从BUCK-BOOST到反激:一个‘拆电感’的视角,轻松理解多路输出交叉调整

本文从BUCK-BOOST电路到反激变换器的演变入手,通过‘拆解电感’的独特视角解析多路输出交叉调整机制。深入探讨了反激电路的能量暂存方式、传递路径变化及电压关系,并结合具体参数对比揭示其特性。针对多路输出中的电压平衡问题,提供了绕组排布优化、元器件选型等实战技巧,帮助工程师有效提升电源系统的稳定性与效率。

weixin_33738578的博客 437

数组的经典问题:有500个人围城一个圈,依次报数,每数到3的倍数的人离开圈,数完一圈后继续从1开始数,直到圈中剩下最后一个人,求剩下的人原来在圈中的位置(约瑟夫环问题)

有500个人围城一个圈,依次报数,每数到3的倍数的人离开圈,数完一圈后继续从1开始数,直到圈中剩下最后一个人,求剩下的人原来在圈中的位置(约瑟夫环问题)System.out.println("最后一个人:" + (i + 1));//数组中元素的索引(无论这个人是否在圈中,原来的位置不会变化)//一旦数完这一圈,重新开始下一轮报数。//标记当前到3的人离开。//判断是否已经到达3的倍数。//声明数组表示所有人是否在圈中。//对还在圈中的计数。//初始化所有人在圈中。

m0_75250529的博客 799

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

模糊综合评价模型

一.引子 1.数学归纳法:同高中知识 2.秃子悖论:秃子悖论 这俩个例子都是类似于“量变引起质变”的道理,而在数学中我们把这类问题的性质叫做“模糊性”,在生活中我们也经常能遇到一些模糊的概念,比如年轻、帅、很少很多… 二.概述 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。——来自百度百

The__Tyche的博客 2万+

经典约瑟夫问题

经典问题约瑟夫环 有500个人围城一个圈,依次报数,每数到3的倍数的人离开圈,数完一圈后继续从1开始数, 直到圈中剩下最后一个人,求剩下的人原来在圈中的位置(约瑟夫环问题) 数组循环输出 1.唯一需要注意的问题,设置具体数值的时候小心下表越界的问题就好。 2.详细解题过程写在以下代码块中。 代码块 public static void main(String[] args) { //将这500人放到一个boolean类型的数组中 boolean [] b = new boolean[500

LAOK2450922119的博客 1542

rk3568 RGMII KSZ8795 MAC TO MAC

参考《Rockchip_Developer_Guide_Linux_MAC_TO_MAC_CN.pdf》

明天乌儿会歌唱 6493

约瑟夫环

5.5.3  西方的约瑟夫环 其实,对于循环排座位的问题,西方也有一个类似的故事。 据说著名历史学家Josephus(约瑟夫)经历过以下故事:在罗马人占领乔塔帕特后,40个犹太人和Josephus躲在一个山洞中。40个犹太人决定宁死也不被敌人抓到,于是决定集体自杀。大家经过讨论决定了一个自杀方式,41个人围成一个圆圈,由第1个人开始报数,每报数到3的人就必须自杀,然由再由下一个人重新开始报数,

大雄不爱吃肉 607

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

超大规模系统(千万级用户)中实现字段级权限控制

摘要:本文提出了一套分布式架构下的字段级权限优化方案,结合RBAC+ABAC混合模型与技术手段实现性能与安全的平衡。方案包括:1)权限模型优化,采用RBAC预计算基础权限与ABAC动态校验敏感字段;2)数据层优化,实现动态字段过滤与加密存储;3)多级缓存策略与预计算机制提升性能;4)分布式架构设计,通过网关校验和策略引擎集群保证扩展性。最终在千万级用户系统中实现99.9%可用性,权限校验延迟控制在50ms以内。

从技术实践立足,从项目管理方法论延伸思考 1348

1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】

Description 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 Input 初始人数n Output 最后一人的初始编号 Sample Input 3 Sample Output 2 Note: 这题 “报数为3的人退出”,这个条件可以改为 “报数为k的人退出”,输入 n, k,...

Cou流氓也要有文化的博客 4119

YOLOv8 | 损失函数改进,最新提出的Shape-IoU,有效涨点

作为检测器定位分支的重要组成,边框回归损失在目标检测任务中发挥巨大作用。现有的边框回归方法,通常考虑了GT框与预测框之间的几何关系,通过使用边框间的相对位置与相对形状等计算损失,而忽略了边框其自身的形状与尺度等固有属性对边框回归的影响。为了弥补现有研究的不足,本文提出聚焦边框自身形状与尺度的边框回归方法。首先我们对边框回归特性进行分析,得出边框自身形状因素与尺度因素会对回归结果产生影响。

kay_545 1913

约瑟夫环问题详解

在牛客网上做到一道题,是约瑟夫环的变型,所以借此学习一下新知识,并且巩固一下对题目意思的理解,这一篇仅作约瑟夫环问题的解释,下一篇再写题目: 1.首先,我们先来了解一下什么是约瑟夫环问题: 讲一个比较有意思的故事:约瑟夫是犹太军队的一个将军,在反抗罗马的起义中,他所率领的军队被击溃,只剩下残余的部队40余人,他们都是宁死不屈的人,所以不愿投降做叛徒。一群人表决说要死,所以用一种策略来先后杀...

tingyun_say的博客 14万+

RML2018.01a数据集的读取与使用

基于深度学习的自动调制识别

QAQIknow的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【算法】约瑟夫环问题

链表算法篇

博客网站地址: https://arsenova.xyz 我会将优快云上的博客重修一部分迁移到网站上。 文章会做同步更新,但我不会在这个糟糕的平台多待1秒。下面是我要说的话,save your time. keep going 1390

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

约瑟夫环问题 python

约塞夫环问题原理python代码特点 原理 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一...

。 575

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python 约瑟夫环问题

为什么80%的码农都做不了架构师?>>> ...

weixin_33712881的博客 1505

Java实现约瑟夫环问题

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 /** * @author 16026 * */ import java.util.ArrayList; import java.util.List;

wangzhen的博客 3万+

openjudge 约瑟夫环问题

1:约瑟夫环问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 1000kB 描述 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 输入 8 1 3 (n=8 k...

pxlsdz的博客 840
上一篇: IntelliJ IDEA常用快捷键
下一篇: java数据结构之基础排序算法
wave_zf
博客等级 码龄9年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值