Java 约瑟夫环(循环链表解决)
问题描述:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。
解题思路:因为是围成一圈,所以用循环链表是最符合相关思维的(不是最优解),对于第M个人进行出队,然后前后节点连接起来继续形成闭环(新约瑟夫环)
代码(Java版)
import java.util.Scanner;/*** @author : jeasion* @name* @comment* @return*/
public class practice37 {public static void main(String[] args) {int N = 0;int M = 0;Scanner s = new Scanner(System.in);System.out.print("N:");N = s.nextInt();System.out.print("M:");M = s.nextInt();Josephus josephus = new Josephus();josephus.dead(M, N);}}class Josephus {int person;Josephus next;Josephus pointer;//用于出队第M人public void dead(int m, int n) {int M = m;int N = n;Josephus josephus = new Josephus();pointer = josephus;//构建循环链表for (int i = 0; i < N; i++) {josephus.person = i;josephus.next = new Josephus();josephus = josephus.next;}josephus = pointer;while (josephus.next.next != null) {josephus = josephus.next;}josephus.next = pointer;int count = m - 1;System.out.print("死亡名单:");while(!pointer.next.equals(pointer)) {count--;Josephus before = pointer; //记录出队前的人,便于以后使其指向M+1的人pointer = pointer.next;if (count == 0) {System.out.print(pointer.person + " ");before.next = pointer.next;pointer.next = null; pointer = before.next;count = m - 1;}}System.out.println("\n幸存者:"+pointer.person);}}
Java 约瑟夫环(循环链表解决)相关推荐
- java约瑟夫环 循环链表_约瑟夫环_循环链表JAVA解答
编写测试案例 public class Cicle { @Test public void test() { LinkedList linkedList = new LinkedList(); lin ...
- java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结
/************************************************************************/ /* Josep ...
- 烽火算法题 报数问题(不是约瑟夫环)双向链表 Java实现与C实现
报数问题 报数问题 解答 1.题目要求 2.解题思路 3.代码实现 3.1 java版本 3.2 c版本 4.问题总结 报数问题 时间限制:3000MS 内存限制:589824KB 题目描述: 当n个 ...
- 用java解决约瑟夫循环问题,Java实现循环列表解决约瑟夫环问题
约瑟夫环:共有n个人围成一圈,从1开始报数,数到m的人出圈,求最后幸运者序号?? 下面用Java实现循环列表解决这个问题: package com.iteye.ljmdbc7a; import jav ...
- java实现环形链表解决约瑟夫环问题
什么是环形链表? 环形链表就是单向链表的基础上让链表的首尾相连,形成一个环,这就是一个循环链表. 什么是约瑟夫环问题? 约瑟夫环如下: 约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数, ...
- 循环链表解决约瑟夫环问题
约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? "约瑟夫环是一个数学的应用问题:已知 ...
- 循环链表构建及解决约瑟夫环、逢七过、链表逆置问题
文章目录 循环链表构建 测试 约瑟夫环 逢七过 链表逆置 循环链表构建 循环链表与链表区别就在于尾指针不再指向null而是指向头指针,形成环. 接口定义: package p1.接口;import j ...
- 【Java】单循环链表解决约瑟夫环问题
问题描述 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自 ...
- 【C语言】循环链表解决约瑟夫环问题
好玩的约瑟夫环:有M个人,编号分别为1到M,玩约瑟夫环游戏,最初时按编号顺序排成队列:每遍游戏开始时,有一个正整数报数密码N,队列中人依次围坐成一圈,从队首的人开始报数,报到N的人出列,然后再从出列的 ...
最新文章
- java设计模式---原型模式
- tensorflow随笔-collection收集器
- java模糊查询比对方法_Java多条件和模糊查询
- msyql 禁止远程访问
- 《Excel 职场手册:260招菜鸟变达人》一第 26 招 对齐两个字的名字
- Linux常用知识与命令
- java mp4转码 h264_10分钟学会Jave视频转码avi--gt;mp4(h264编码格式)!_Java_七九推...
- DreamWeaver插件–Javascript文件美化、自动缩进
- fckeditor java 使用方法_FCKeditor使用说明
- 如何给 PDF 文档批量添加页眉页脚?如何给 PDF 文档批量添加页码?
- Ubuntu 18.04 隐藏桌面的回收站图标
- ACM-ICPC2018北京网络赛 Tomb Raider(暴力)
- 24位真彩色图片取摸方法(用于WS2812显示)
- 解决Mac没有consolas字体的问题,idea也能用
- Android加密工具类,Android AES加密工具类分享
- 【爬虫】用Python爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具)
- 文献翻译2:AOPG: Anchor-free Oriented Proposal Generator for Object Detection
- python可以自学吗需要什么基础-自学python需要什么基础,要掌握哪些知识?
- 小六六平时的开发小技巧二(Nacos在服务配置中心的妙用)
- js 给元素添加自定义属性