题目:有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位.
1 public class _037NumberOff { 2 3 public static void main(String[] args) { 4 numberOff(); 5 } 6 7 private static void numberOff() { 8 Scanner scanner = new Scanner(System.in); 9 System.out.println("请输入排成一圈的人数: "); 10 int n = scanner.nextInt(); 11 fun(n); 12 scanner.close(); 13 } 14 15 private static void fun(int n) { 16 17 boolean[] arr = new boolean[n]; 18 19 int countNum = arr.length; 20 21 // 开始都有人,初始化为true 22 for (int i = 0; i < arr.length; i++) { 23 arr[i] = true; 24 } 25 26 // 数到3去除 27 for (int i = 0, j = 0;; i++) { 28 if (arr[i]) { 29 j++; 30 if (j == 3) { 31 arr[i] = false; 32 j = 0; 33 // 删除一人 34 countNum--; 35 } 36 } 37 38 // 39 if (i == arr.length - 1) { 40 i = -1; 41 } 42 43 if (countNum == 1) { 44 break; 45 } 46 } 47 48 for (int i = 0; i < arr.length; i++) { 49 50 if (arr[i]) { 51 System.out.println("原排在第" + (i + 1) + "位的人留下了."); 52 53 } 54 } 55 } 56 }