算法Sedgewick第四版-第1章基础-017一约瑟夫问题(Josephus Problem)
1 /************************************************************************* 2 * 3 * Josephus problem 4 * 5 * % java Ex_1_3_37 7 2 6 * 1 3 5 0 4 2 6 7 * 8 *************************************************************************/ 9 10 public class Ex_1_3_37 11 { 12 public static void main(String[] args) 13 { 14 int n = Integer.parseInt(args[0]), 15 m = Integer.parseInt(args[1]); 16 17 Queue<Integer> q = new Queue<Integer>(); 18 for (int i = 0; i < n; i++) 19 q.enqueue(new Integer(i)); 20 21 int k = 0; 22 while (!q.isEmpty()) 23 { 24 int x = q.dequeue(); 25 26 if (++k % m == 0) 27 StdOut.print(x + " "); 28 else 29 q.enqueue(x); 30 } 31 StdOut.println(); 32 } 33 }
You can do anything you set your mind to, man!