文档章节

用Java实现约瑟夫环

Oconnor
 Oconnor
发布于 2012/09/15 20:56
字数 251
阅读 72
收藏 0

什么是约瑟夫环呢?

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

我们用程序说话,实现约瑟夫环


  
  1. import java.util.Scanner; 
  2.  
  3. public class Josephus { 
  4.     private static class Node { 
  5.         public int no;// 编号 
  6.         public Node next;// 下一个节点 
  7.  
  8.         public Node(int no) { 
  9.             this.no = no; 
  10.         } 
  11.     } 
  12.  
  13.     public static void main(String[] args) { 
  14.         Scanner scanner = new Scanner(System.in); 
  15.         System.out.print("请输入总人数:"); 
  16.         int totalNum = scanner.nextInt(); 
  17.         System.out.print("请输入报数的大小:"); 
  18.         int cycleNum = scanner.nextInt(); 
  19.         Node header = new Node(1); 
  20.         Node pointer = header; 
  21.         for (int i = 2; i <= totalNum; i++) { 
  22.             pointer.next = new Node(i); 
  23.             pointer = pointer.next; 
  24.         } 
  25.         pointer.next = header; 
  26.         // 初始化环形链表结束 
  27.         System.out.println("以下是出列的顺序:"); 
  28.         while (pointer != pointer.next) { 
  29.             for (int i = 1; i < cycleNum; i++) { 
  30.                 pointer = pointer.next; 
  31.             } 
  32.             System.out.println(pointer.next.no); 
  33.             pointer.next = pointer.next.next; 
  34.         } 
  35.         System.out.println(pointer.next.no); 
  36.     } 
  37. }

本文转载自:http://developer.51cto.com/art/201108/287699.htm

Oconnor

Oconnor

粉丝 6
博文 3
码字总数 0
作品 0
浦东
程序员
私信 提问
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ 总结:第一种是自己想的lowlow的写法,代码冗余,可读性一般。第二种利用了队列双...

无极之岚
05/24
32
0
“约瑟夫环”与Hibernate环境搭建排错

上周二打了个约瑟夫环的类,不知道为什么一直运行不成功,字母并没有传入成功。昨天I下午就特意花时间检查错误,查了很久都不知道哪里出错,后来觉得应该是字母插入的问题,就在那个字母循环...

一梦心草
2015/05/13
26
0
JVM 深入笔记(3)垃圾标记算法

JVM深入笔记(3)垃圾标记算法 Author: Poechant Blog: blog.CSDN.net/Poechant Email: zhongchao.ustc#gmail.com (#->@) Date: March 3rd, 2012 Copyright © 柳大·Poechant 如果您还不了解......

晨曦之光
2012/04/24
108
0
数据结构与算法-C语言篇9-用循环链表实现约瑟夫环问题

数据结构与算法-目录 前言 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,...

香沙小熊
2018/01/21
0
0
《剑指offer》数学题及其它 (牛客11.05)

比较多的思维题,涉及位运算、快速幂、二进制、约瑟夫问题、队列、贪心、dp等等。 难度 题目 知识点 ☆ 12、数值的整数次方 细节,快速幂 ☆☆ 47、求1+2+3+···+n 思维发散 ☆☆ 48、不用...

武藏小次郎
11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell学习记录(持续更新)

一、shell定时备份数据库任务通用脚本 目标:根据定时任务启动脚本,执行数据库备份任务,按照日期进行每日备份,如已经备份则脚本停止,备份任务完成后将结果发送邮件提醒 1.执行数据库备份...

网络小虾米
今天
3
0
PHP计算两个经纬度地点之间的距离

/** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距离,单位米 * @author www.Alixixi.com */function get...

子枫Eric
今天
14
0
Linux—day 4

ch2 需要掌握的命令 (1)cat -n 1.txt (2)more 1.txt (3)head -n 15 initial-setup-ks.cfg (4)tail -n 17 initial-setup-ks.cfg;tail -f initial-setup-ks.cfg (5)cat -n anaconda-ks.c......

呵呵暖茶
今天
31
0
【Kubernetes社区之路】我的PR被抢了

2019年11月的某天,我无意间发现一个PR作者在自己的PR中抱怨自己的PR没被合入,而另一个比自己提交晚且内容几乎一样的PR则被合入了。 字里行间透露些许伤感外加无奈,原文如下: 作为一名开源...

恋恋美食
今天
40
0
阻塞队列

对于许多线程问题, 可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插人元素, 消费者线程则取出它们。 使用队列, 可以安全地从一个线程向另 一个线程传递数据...

ytuan996
今天
48
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部