【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);
			}
		}

		
	}


posted @ 2014-02-15 22:44  IT专业户  阅读(239)  评论(0编辑  收藏  举报