当前位置: 首页 > news >正文

网站建站那个好中国建筑招聘官方网站

网站建站那个好,中国建筑招聘官方网站,ps软件下载电脑版,网站建设会碰到什么问题目录 1.约瑟夫环定义 2.约瑟夫环算法实现需要注意的地方 3.通过一个例子来演示这个过程 4.三人的约瑟夫环示例 4.十二人的约瑟夫环示例 1.约瑟夫环定义 约瑟夫环即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一…

目录

1.约瑟夫环定义

2.约瑟夫环算法实现需要注意的地方

3.通过一个例子来演示这个过程

4.三人的约瑟夫环示例

4.十二人的约瑟夫环示例


1.约瑟夫环定义

        约瑟夫环即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人再次出列,如此反复循环,直到所有人都出列为止,最后按出列顺序输出。

        实现约瑟夫环算法时,最重要的是约瑟夫环的流程。约瑟夫环应该有三个重要的参数、总人数、开始报数的人、第几次报数出列的人。

2.约瑟夫环算法实现需要注意的地方

        在实现约瑟夫环问题时,有一点需要特别注意:当有人出列后,列表中的人数会减少,但下一个报数的起始位置(即index)应该基于剩余的人数进行更新。这意味着在每次有人出列后,我们都需要将index减1,然后再进行(index + 1) % people.Count的操作。

        以下是约瑟夫环算法的逻辑:

  • 初始时,index是起始位置(从index=0开始计数)。
  • 在每次有人出列后,将index减1,以反映列表中人数的减少。
  • 使用(index + 1) % people.Count来找到下一个报数的起始位置。

3.通过一个例子来演示这个过程

        假设有3个人,起始位置是第2个人(index = 1),每次数到2的人出列。

        初始状态:

  • people = [1, 2, 3]
  • index = 1(第2个人)

        第一轮报数:

  • 报数1:当前位置是2,不出列。
  • 报数2:当前位置是3,出列。
  • 更新people = [1, 2]
  • 更新index = (2 - 1) % 2 = 1(因为第3个人出列了,所以剩下的人里第1个人成为新的起始位置)

        第二轮报数:

  • 报数1:当前位置是1,不出列。
  • 报数2:当前位置是2,出列。
  • 更新people = [1]
  • 更新index = (1 - 1) % 1 = 0(因为第2个人出列了,所以剩下的人里第1个人成为新的起始位置,其索引0在编程中通常表示列表的第一个元素)

        第三轮报数:

  • 报数1:当前位置是1,不出列。
  • 报数2:当前位置还是1,出列。(只剩一个人时要报两次数)
  • 更新people = [](所有人都已经出列)

4.三人的约瑟夫环示例

// 3人的约瑟夫
class JosephusProblem
{static void Main(){int n = 3;  // 总人数int m = 2; // 起始位置(从索引1开始计数)int k = 2;  // 报数值List<int> people = [];for (int i = 1; i <= n; i++){people.Add(i);}int index = m - 1; // 转换为0基础的索引while (people.Count > 0){// 找到需要出列的人的索引index = (index + k - 1) % people.Count;// 出列该人并打印int outPerson = people[index];people.RemoveAt(index);Console.WriteLine("出列人的编号是:" + outPerson);}Console.WriteLine("所有人已出列。");}
}
//运行结果:
/*
出列人的编号是:3
出列人的编号是:2
出列人的编号是:1
所有人已出列。*/

4.十二人的约瑟夫环示例

        始终使用index = (index + m - 1) % circle.Count;计算出下一个出列的人的索引。

// 约瑟夫环算法
namespace _149
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);Console.Write("请输入人数n:");int n = int.Parse(Console.ReadLine()!);Console.Write("请输入报数间隔m:");int m = int.Parse(Console.ReadLine()!);Console.Write("请输入开始位置k:");int k = int.Parse(Console.ReadLine()!);List<int> circle = [];for (int i = 0; i < n; i++){circle.Add(i);}int index = k - 1;while (circle.Count > 0){index = (index + m - 1) % circle.Count;int outPerson = circle[index];circle.RemoveAt(index);Console.WriteLine("出列顺序:{0}", outPerson);}}}
}
//运行结果:
/*
请输入人数n:12
请输入报数间隔m:4
请输入开始位置k:3
出列顺序:5
出列顺序:9
出列顺序:1
出列顺序:6
出列顺序:11
出列顺序:4
出列顺序:0
出列顺序:8
出列顺序:7
出列顺序:10
出列顺序:3
出列顺序:2*/

http://www.yayakq.cn/news/939157/

相关文章:

  • 宁波h5模板建站wordpress主从库
  • 网站制作与建设教程下载软件工程师是做什么的
  • 怎么制作自己的网站网页济南品牌网站建设公司
  • 中山市城乡和住房建设局网站用添加视频到wordpress
  • 企业网站seo价格公众号怎么开通直播
  • 门户网站开发流程加工平台搭设规范要求
  • 深圳外贸网站定制兰州网站制作要多少钱
  • 上海金瑞建设集团网站wordpress 点赞打赏
  • 用dreamwever做网站emlog友情链接代码
  • 建e网站电子商务网站建设程序的开发
  • 营销型网站 平台中国建设银行信用卡电话
  • 济南网站建设方案书炫丽的网站
  • 一站式采购平台官网搜索引擎查询
  • 做网站的上海公司徐州建站公司
  • 哪些网站的简历做的比较好wordpress 关闭工具栏
  • asp网站报错信息网站推广公司推荐
  • 建网站商城平台株洲seo网络优化招聘网
  • 泉州网站建设网络推广大连seo外包公司
  • 网站建设产业pest分析自媒体怎么入门
  • 乡村建设的网站学做点心的网站
  • 锡林浩特网站建设宁波依众网络科技有限公司
  • 重庆夹夹虫网络公司网站建设建设房产网站
  • 邢台中高风险地区查询搜索引擎优化到底是优化什么
  • 赣州网站维护wordpress 数据库查询插件
  • 中文企业展示网站模板网站以前在百度能搜索不到了
  • 开发网站类型百度一下你就知道手机版官网
  • 如何做竞价网站做暧暧视频网站w
  • WordPress首页不收录昆明百度搜索排名优化
  • 郑州网站推广 汉狮网络微信小程序 连接网站
  • 公司做网站卖东西要什么证深圳保障房申请条件2022