1 public class Josephus {
2 public static int[] arrayOfJosephus( int number, int per) {
3
4 int[] man = new int[number];
5
6 for(int count = 1, i = 0, pos = -1;
7 count <= number; count++) {
8 do {
9 pos = (pos+1) % number; // 環狀處理
10 if(man[pos] == 0)
11 i++;
12
13 if(i == per) { // 報數為3了
14 i = 0;
15 break;
16 }
17 } while(true);
18
19 man[pos] = count;
20 }
21
22 return man;
23 }
24
25 public static void main(String[] args) {
26 int[] man = Josephus.arrayOfJosephus(41, 3);
27 int alive = 3;
28
29 System.out.println("約瑟夫排列:");
30 for(int i = 0; i < 41; i++)
31 System.out.print(man[i] + " ");
32
33
34 System.out.println("\nL表示3個存活的人要放的位置:");
35 for(int i = 0; i < 41; i++) {
36 if(man[i] > alive)
37 System.out.print("D");
38 else
39 System.out.print("L");
40
41 if((i+1) % 5 == 0)
42 System.out.print(" ");
43 }
44
45 System.out.println();
46 }
47 }