约瑟夫循环

简单粗暴

什么是约瑟夫循环

举个例子

1 2 3 4

四个人

从头开始报数 报到3 的人 淘汰 然后继续报数 规则依旧

我们来演示一下

开始是1 2 3 4

3 数3 淘汰

(下面顺序会调整)

剩下4 1 2

继续 淘汰 2(应该不用说为什么吧)

还剩 4 1

淘汰4(数到结尾就回到开头继续 是一个圈的形状 )

还剩下最后的 1

OK 我们现在的问题就是给你一个数 n 现在开始有1到n 假设 判断标准是3 让你来判断 最后剩下的人的序号 (1到n 中的一个 就是一个数 例如上面的1)

当然你可以一个一个去数

那就失去这篇文章的意义了不是吗

所以这里将的是一个好方法

OK 我先来眼熟一遍

最后剩下一个对吧

我们1+3 4 对2取余 得 0 但是结果不能小于1 所以加2 故2

下面2+3 对3取余 得2

最后 2+3 对4取余 的 1

所以最后结果就是1

在来看看我们上面一个一个数的

约瑟夫循环

怎么样 是不是 1

哈哈 牛不牛逼 开玩笑 哈

现在我们来讲讲为什么

我们数 数到三 然后淘汰 一个数 在继续数

例如 1 2 3 4

淘汰3 剩下的顺序是 4 1 2

他们对应对新序号分别是 1 2 3

其实就是 吧他们的序号全部向前移动3位 得到的

就是 他的 新位置

不过这个是圈形的

4-3=1

2-3=-1 -1+4=3

1-3=-2 -1+4=2

故 4 1 2 对应 1 2 3

下面继续往下的解析就不多说了 自己在本子上演算一下就OK

OK 我们言归正传

倒着怎么求

既然他是往前移动3 位 我们就往后移动 三位呗 这样不就找到这个数 在上一轮的对应位置了吗

OK 下面开始

还是 1 2 3 4

最后还剩一个数 对吧 对应位置是1

我们就往回走

一次 1+3=4 4%2=0 必须大于0 0+2=2

位置是2 注意此时长度为2

二次 2+3=5 5%3=2

位置是 2 此时为3

三次 2+3=5 5%4=1

位置是 1 此时 是4

因为我们要求的就是长度是4 的

所以我们可以结束了

即 开始位置是1 的就是最终剩下的哪一个

OK

下面是 代码实现

include

intmain ()

{

int n;//总长度

int max=1;

int m;//标准

scanf(“%d %d”,&n,&m);

int i;

for (i=2;i

max=(max+m)%i;

if (max==0) {

max+=i;

}

}

printf(“%d\n”,max);

return 0;

}

运行结果

约瑟夫循环

ok 今天就到这 有什么不对的地方 烦请予以指正

Original: https://www.cnblogs.com/cndccm/p/12678302.html
Author: Mr小明同学
Title: 约瑟夫循环

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/710778/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • docker启用镜像常用脚本

    语法:docker run [OPTIONS ]IMAGE [COMMAND ][ARG …] OPTIONS说明:-a stdin: 指定标准输入输出内容类型,可选 …

    技术杂谈 2023年7月10日
    064
  • win10下计算文件哈希值的方法

    cmd下使用certutil命令 使用方法: certutil -hashfile FILE_NAME ALGORITHM_NAME 支持的加密算法包括:MD2,MD4,MD5,S…

    技术杂谈 2023年7月25日
    064
  • 10 款更先进的开源命令行工具

    Linux 诞生于 1991 年,我们熟知的 ls、 cd、 ps 等命令也出生于那个年代。虽然它们都是 30 年前的产物,但是我们现在依旧每天都在用这些命令。 也许是审美疲劳又或…

    技术杂谈 2023年6月1日
    079
  • cube.js 0.30.30 配置的一些变动

    好久没关注cube.js 最近0.30.30 有一个比较大的变动就是driverFactory 新配置 此配置的影响 此配置会对于开发的自定义驱动有一些影响,推荐的是自己开发的dr…

    技术杂谈 2023年5月30日
    073
  • CentOS安装NodeJS

    NodeJS 构建VUE项目 这部分很基础,网上很多教程 yum install -y wget 如果已经安装了可以跳过该步 在https://nodejs.org/en/down…

    技术杂谈 2023年6月1日
    074
  • 5分钟搞定ORACLE到ClickHouse数据迁移同步-CloudCanal实战

    ClickHouse 是一种流行的列式数据库,对于计算 uv、mv、pv 等聚合类数据相当友好,所以广泛使用于各类报表场景。 本文主要介绍如何使用 CloudCanal 快速构建一…

    技术杂谈 2023年7月24日
    064
  • 【证券从业】金融基础知识-第二章 中国金融体系与多层次资本市场02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-05-31 22:14 陈景中 阅读…

    技术杂谈 2023年7月10日
    098
  • Linux安装cmatrix代码雨教程

    一:介绍 cmatrix代码雨是Linux的系统屏保界面;执行cmatrix不仅可以练习简单的编译安装软件三部曲,还可以执行cmatrix命令做出代码雨,提升文化实力 二:成品演示…

    技术杂谈 2023年7月11日
    061
  • Linux入门操作介绍

    Linux 是由unix衍生而来(小知识:mac也是使用unix核心),由全世界的程序员一起开发的开源系统。如今基于linux已经有了很多版本,我们后面使用的就是衍生版本之一的Ub…

    技术杂谈 2023年7月11日
    053
  • 461. Hamming Distance

    The Hamming distance between two integers is the number of positions at which the correspo…

    技术杂谈 2023年6月21日
    061
  • Mybatis 源码2——SqlSession,执行器和一级缓存

    一丶 SqlSessionFactoryBuilder,SqlSessionFactory,sqlSession mybatis 获取sqlSession是通过SqlSession…

    技术杂谈 2023年7月24日
    076
  • js中的注释

    javascript;gutter:true;//1. 单行注释 /* 2.多行注释 */ Original: https://www.cnblogs.com/qingmuchua…

    技术杂谈 2023年5月31日
    095
  • 设计模式——行为型设计模式

    行为型设计模式 针对对象之间的交互 解释器模式 java中用的很。JVM编译的时候就是对我们写的代码进行了解释操作;数据库SQL语句亦是如此 解释器:对语言进行解释,根据不同语义来…

    技术杂谈 2023年7月11日
    065
  • 罗德岛

    自从转行以后就建博了,一直没有动手写内容,今天开始写。 主要记录技术上的积累和项目上的工作感悟。 这里就是罗德岛,就在这里跳。 Original: https://www.cnbl…

    技术杂谈 2023年6月21日
    067
  • 常见题目

    这几天有朋友反映给小编说让多发点关于面试的文章,小编深知从事IT行业的难处,跳槽多,加班多,薪资不乐观,大多数朋友都想找新的工作,进入一个好的公司,今天小编就给大家带来了C语言面试…

    技术杂谈 2023年6月21日
    083
  • ArcGIS Pro创建注记

    You can check out some of these Annotation tools: Annotate Selected Features Convert Label…

    技术杂谈 2023年5月30日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球