程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用Java實現約瑟夫環

用Java實現約瑟夫環

編輯:關於JAVA

什麼是約瑟夫環呢?

約瑟夫環是一個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重復下去,直到圓桌周圍的人全部出列。

我們用程序說話,實現約瑟夫環

  1. import Java.util.Scanner;
  2. public class Josephus {
  3. private static class Node {
  4. public int no;// 編號
  5. public Node next;// 下一個節點
  6. public Node(int no) {
  7. this.no = no;
  8. }
  9. }
  10. public static void main(String[] args) {
  11. Scanner scanner = new Scanner(System.in);
  12. System.out.print("請輸入總人數:");
  13. int totalNum = scanner.nextInt();
  14. System.out.print("請輸入報數的大小:");
  15. int cycleNum = scanner.nextInt();
  16. Node header = new Node(1);
  17. Node pointer = header;
  18. for (int i = 2; i <= totalNum; i++) {
  19. pointer.next = new Node(i);
  20. pointer = pointer.next;
  21. }
  22. pointer.next = header;
  23. // 初始化環形鏈表結束
  24. System.out.println("以下是出列的順序:");
  25. while (pointer != pointer.next) {
  26. for (int i = 1; i < cycleNum; i++) {
  27. pointer = pointer.next;
  28. }
  29. System.out.println(pointer.next.no);
  30. pointer.next = pointer.next.next;
  31. }
  32. System.out.println(pointer.next.no);
  33. }
  34. }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved