37 有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3
2023-10-24 本文已影响0人
北极的大企鹅
题目:有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 }