【Java基础】“数三退一”问题的代码实现
现在有500个小孩,编号为0-499,手牵手连成一个圈,从第一个小孩开始“123123...”报数,数到三的小孩退出,求剩下的最后一个小孩的编号。
public static void main(String[] args) { //用boolean类型来表示小孩,默认为true boolean[] arr = new boolean[500]; for (int i = 0; i < 500; i++) { arr[i] = true; } //圈内剩下的小孩的数量 int lefyCount = arr.length; int index = 0; int countNum = 0; while (lefyCount > 1) { if (arr[index] == true) { countNum++; if (countNum == 3) { countNum = 0; arr[index] = false; lefyCount--; } } index++; if (index == arr.length) { index = 0; } } for (int i = 0; i < arr.length; i++) { if (arr[i] == true) { System.out.println(i); } } }