用Java实现约瑟夫环

什么是约瑟夫环呢?

约瑟夫环是一个数学的应用问题:已知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.     } 

原文链接:http://tanlan.iteye.com/blog/1159502

【编辑推荐】

  1. Java 8整装待发 图谋云计算
  2. Java 7是蜜糖还是毒药?
  3. 选用Ibatis和Hibernate的区别
  4. JRuby和Java 7 我们可以期待什么
  5. 关于Eclipse使用64位Java 7崩溃的问题

文章标题:用Java实现约瑟夫环
文章起源:http://www.csdahua.cn/qtweb/news40/311740.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网