瑟夫环问题:

问题描述
  一群人围在一起,由第一个人从一开始报数,直到有人报到三,报到三的人出局,剩下的人继续从一开始报数报到三的人出局,以此循环往复直到这一圈人只剩下一个人游戏结束。

问题分析
  1.要完成这个游戏首先要所有人围成一圈,这样才可以按照出局规则一直循环下去这个,我们可以定义一个ArrayList集合用来存储游戏中的所有玩家,再定义一个变量index来表示当前报数玩家在圈中的位置。用循环实现index从0开始一直到最后一个下标。当index到最后一个下标的时候就让index等于0以此来模拟一群人围在一起的环。
  2.实现了一个环结构后就可以在其中编写规则了首先是从一开始报数,首先定义一个变量number然后,让number每一次循环都自增一。直到number==3这时就应该移出ArrayList中当前下标(index)的元素
并且让number等于一(因为移出ArrayList当前元素会使得之后的元素向前移动填补当前空位,所以下一次的报数还应该从当前下标开始)然后continue跳出本次循环并且从跳出循环前的下标开始下一次的报数。
  3.游戏总有结束的时候,所以这个循环也应该有个终止条件。这个循环的终止条件很简单,当ArrayList.size()为一的时候就可以终止了。换言之当ArrayList.size()>1是可以继续循环的条件。
代码实现

import java.util.ArrayList;
import java.util.List;public class LianXi01 {public static void main(String[]args){int index = 0;int number = 1;List<Integer> list = new ArrayList();//这个循环用来给ArrayList中的元素赋值为了方便辨认获胜者是哪一位所以从1开始for(int i=1;i<=15;i++){list.add(i);}System.out.print("出局的顺序:");//在这里游戏正式开始while(list.size()>1){//这个用来判断当前下标是否超出集合最大下标(也就是说是否该重新从第一个人开始报数)if(index>list.size()-1){index=0;}//这个用来判断报的数是否到达3if(number==3){System.out.print(list.get(index)+" ");list.remove(index);number=1;continue;}number++;index++;}//因为集合中只剩下了一个人所以0下标就是剩下的那个人,直接输出即可System.out.print("游戏结束第"+list.get(0)+"人胜利");}
}

运行结果:出局的顺序:3 6 9 12 15 4 8 13 2 10 1 11 7 14 游戏结束第5人胜利

java代码实现瑟夫环问题相关推荐

  1. java 实现约瑟夫环

    这一次是借鉴模仿别人写的代码,以前觉得不好将数据结构的链结构什么的迁移到java上来使用,但这一次确实让我感受到了可以自己构造数据结构,然后使用类似链的方式来解决约瑟夫环,有所顿悟.不多说,继续上代码 ...

  2. 人类高质量代码解约瑟夫环问题

    n个人(0,1,2,3,4-n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,-m这样报的).下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人 ...

  3. 简洁明了!Java实现单向环形链表以解决约瑟夫环Josepfu问题

    文章目录 简单介绍 代码实现 简单介绍 如果把单链表的最后一个节点的指针指向链表头部,而不是指向NULL,那么就构成了一个单向循环链表,通俗讲就是让尾节点指向头结点. 单向环形链表应用场景:Josep ...

  4. 约瑟夫环Java实现

    面试中可能经常会遇到约瑟夫环问题,逻辑上很简单,就是看怎么实现了,一般而言,最简单最直观的就是利用链表,然后构建一个循环结构,正好是环,最后计算出结果. 遍历环形链表会是一个无限循环,如果链表中的数据 ...

  5. 约瑟夫环c语言代码 指针,约瑟夫环C语言实现源代码(1)

    前天笔试有个约瑟夫环的问题,怪不得人家没通知我面试,原来我的约瑟夫环做的确实有问题,昨天晚上又重新做了下,下面上源代码: /* file:osephu.cpp author:www.5dkx.com ...

  6. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

    详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...

  7. 程序员面试系列——约瑟夫环

    约瑟夫斯问题(Josephus Problem) 约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为"约瑟夫环",也 ...

  8. 约瑟夫环数据结构c语言程序,数据结构的C语言(类C语言)--单向循环链表--约瑟夫环...

    代码区 约瑟夫环:用类C语言实现!!!可以成功运行!!!不是仅仅的算法,而是实实在在的类C #include #include typedef int ElemType; typedef struct ...

  9. # R语言——约瑟夫环

    约瑟夫环: n个人围成一个圈,从第一个人点名,每数到第三个人,这个人移出圈外, 依次类推,求最后留下来的人编号是? 思路:每次循环重新编码序号作为names,并根据names 进行筛选 拓展:约瑟夫环 ...

最新文章

  1. 设置树莓派的无线网卡为监听模式(monitor)
  2. 大佬带你深入浅出Lua虚拟机
  3. 项目中使用Quartz集群分享--转载
  4. ABAP ALV 颜色设置(行,列,单元格)
  5. Gensim Word2vec 使用教程
  6. 很基本的权限功能小结
  7. java 乘法 位移_Java:移位实现的乘除法
  8. 通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole
  9. 章节十一、9-操作隐藏元素
  10. 全网首发:JDK绘制文字:七、使用字体图像进行绘制
  11. Android实现计算器布局(线性布局)
  12. 基于TI8168平台的16路D1分辨率的DVR方案
  13. apt-get安装软件:依赖冲突问题及解决
  14. linux 开启共享文件,文件夹共享权限设置,linux设置文件夹权限-
  15. 【黑灰产犯罪研究】网络水军
  16. 【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系
  17. C# 实现实时网速
  18. Linux驱动学习--linux以太网驱动及硬件结构介绍(结合gmac项目分析)
  19. 【优化算法】象群游牧优化算法(EHO)【含Matlab源码 1080期】
  20. python是商业组织吗_基于Python的电子商务系统的弹性架构与思考

热门文章

  1. 2021-3-30 hackbar
  2. 用户选择云计算机的首要考虑因素是什么,用户选择云计算时的首要考虑因素是...
  3. 凤姐模仿Lady Gaga 称和国外明星平起平坐(图)
  4. 简单字符驱动笔记(朱有鹏)
  5. 如何快速掌握Python数据采集与网络爬虫技术
  6. 阿里云轻量服务器使用一年使用体验(个人心得,仅供参考)
  7. C++ STL prev()函数
  8. js设置、获取缓存方式
  9. 什么是低格、高格、快格?
  10. php nbl2,NBL二年级新军杀入总决赛 虽败犹荣已创造历史