约瑟夫环问题描述:
编号为1-N的N个人按顺时针方向围坐成一圈,从第S个人开始报数(从1报起),报数为M的人出圈,再从他的顺时针方向的下一个人重新开始报数,如此下去,直至所有人出圈为止,给出N个人的出去顺序

算法:
1、设置一个boolean数组out,元素out[i]标记编号为i的人是否已经出圈
2、从编号为S 的人开始,若为报数至M,则继续寻找下一出圈标记为false的 人
3、输出报数为M的人的编号,并修改其对应的出圈标记为true
4、若输出人数未达到M,则继续寻找下一出圈标记为false的人并重新报数,否则结束

源代码:

package ch4_2;public class JosephRing {public static void main(String[] args) {// 总人数final int N = 13;// 从第S个人开始报数final int S = 3;// 报数为M的人出圈final int M = 5;// 统一下标与人的标号(自然计数)boolean[] out = new boolean[N + 1];// 初始化数组for (int i = 1; i <= N; i++) {// 报数前所有人都未出圈out[i] = false;}// 存放下次开始报数的人的编号int i = S;// 已出圈的人int n = 0;// 报数为count的人int count;System.out.println("出圈顺序:");// 仍有人在圈内while (n < N) {// 出圈后重新计数count = 0;// 未报数至Mwhile (count < M) {// 报数的人未出圈if (out[i] == false) {// 报数count++;}// 未报数至M(上面的if语句可能修改了count)if (count < M) {// 求下一个的编号(到达N+1则回到第1个人)i = (i + 1 > N ? 1 : i + 1);}}// 内层while结束,编号为i的人出圈System.out.println(i + " ");// 标记出圈的人out[i] = true;// 又有一人出圈n++;}}}

Java_案例实例2.约瑟夫环问题相关推荐

  1. Java_案例实例1.简单的人机交互

    运行效果截图: 源代码: package ch3_4;import java.util.Scanner;public class InteractionDemo {public static void ...

  2. 约瑟夫环 java_约瑟夫环Java实现

    /** * 约瑟夫问题 * 设编号为 1,2,- n 的 n 个人围坐一圈, * 约定编号为 k(1<=k<=n)的人从 1 开始报数, * 数到 m 的那个人出列, * 它的下一位又从 ...

  3. python中约瑟夫环程序_Python实现约瑟夫环问题的方法

    本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...

  4. java实现简单的约瑟夫环问题(二)

    Josephus(约瑟夫)问题的数学方法 前面的内容都是直接来来自于百度百科,后面才是我对这段话的理解 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间 ...

  5. python解决约瑟夫问题_Python实现约瑟夫环问题的方法

    本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...

  6. python约瑟夫环_Python实现约瑟夫环问题的方法

    本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...

  7. I00032 约瑟夫环(Joseph problem)

    有关约瑟夫环的介绍,可以参见百度百科的约瑟夫环. 程序中假定人数n小于100,输入数据为n和m.其中,n为人数,数到第m个人出局.输出出局人的顺序.输入数据为0和0时程序结束. AC的C语言程序如下: ...

  8. python约瑟夫环_Python语言之如何实现约瑟夫环问题

    本文Python语言实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,希望对大家学习Python语言有所帮助,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0 ...

  9. java实现约瑟夫环完整算法_Java简单实现约瑟夫环算法示例

    Java简单实现约瑟夫环算法示例 发布时间:2020-10-01 14:19:56 来源:脚本之家 阅读:104 作者:perfect亮 本文实例讲述了Java简单实现约瑟夫环算法.分享给大家供大家参 ...

最新文章

  1. 后退N帧协议中的滑动窗口
  2. python中的enumerate 函数(编号的实现方式)
  3. ARM7与ARM9的区别
  4. 简洁的导出 datatable到excel,不用组件
  5. k8s挂载目录_云原生存储详解:容器存储与 K8s 存储卷
  6. Chrome开发者工具和Firebug的一些简单比较
  7. Layui--代码修饰器layui.code
  8. 解决一个Android Studio gradle的小问题
  9. 数塔问题-------给你有哪些启示?
  10. 将labelme工具生产的json文件批量转dataset
  11. 制作纯天然无污染的微软官方win10Pe(超详细)
  12. 超简单漂浮广告代码、网页漂浮广告代码、jQuery漂浮广告、div漂浮层
  13. 皮皮虾视频抓包去水印教程原理
  14. phpnow升级mysql_PHPnow更新PHP版本后连接数据库错误(mysql_connect报错)
  15. 谷哥学术2022年2月资源分享下载列表 15/20
  16. 飞鱼手机短信语音验证码接收平台API接口例子
  17. 为什么爱因斯坦反对《自然辨证法》
  18. 微软Project Online落地中国
  19. Django发送HTML邮件
  20. 计算机毕业设计Java传统文化知识竞赛系统(源码+系统+mysql数据库+lw文档

热门文章

  1. 【Android Developers Training】 0. 序言:构建你的第一个应用
  2. Linq To Sql 练习
  3. 解决TM2008的界面字体问题
  4. 新建虚拟机Ubuntu16.4安装搜狗输入法的问题
  5. opencv 图像增强_图像增强、锐化,利用 Python-OpenCV 帮你实现 4 种方法!
  6. Quartus II18.0安装教程
  7. codeup 1943进制转换
  8. C语言 | 哈夫曼(haffman)算法实现数据的解压缩(源代码)
  9. wd2003计算机考试,2015计算机一级MsOffice练习:Word2003
  10. 医疗器械软件网络安全法规和标准概述(附所有标准)