約瑟夫環的java實現


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

直接給出代碼,歡迎拍磚。

 1 package com.timeng;
 2 
 3 import java.util.ArrayList;  
 4 import java.util.List;  
 5 import java.util.Scanner;  
 6   
 7 public class Yue {  
 8     public static void main(String[] args) {  
 9         Scanner scanner = new Scanner(System.in);  
10         System.out.print("請輸入總人數:");  
11         int totalNum = scanner.nextInt();  
12         System.out.print("請輸入報數的大小:");  
13         int cycleNum = scanner.nextInt();  
14         yuesefu(totalNum, cycleNum);  
15     }  
16   
17    public static void yuesefu(int totalNum, int countNum) {  
18         // 初始化人數  
19         List<Integer> start = new ArrayList<Integer>();  
20         for (int i = 1; i <= totalNum; i++) {  
21             start.add(i);  
22         }  
23         //從第K個開始計數  
24         int k = 0;  
25         while (start.size() >0) {  
26             k = k + countNum;  
27             //第m人的索引位置  
28             k = k % (start.size()) - 1;  
29            // 判斷是否到隊尾  
30             if (k < 0) {  
31                 System.out.println(start.get(start.size()-1));  
32                 start.remove(start.size() - 1);  
33                 k = 0;  
34             } else {  
35                 System.out.println(start.get(k));  
36                 start.remove(k);  
37             }  
38         }  
39     }  
40 }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM