一群小朋友围成一圈数数,数到3的那个小朋友退出圈,下一个接着重新数数。500个小朋友最后剩下的那一个是哪个小朋友。
- public static void main(String[] agrs) {
- //使用数组代表500孩子,true代表在圈里。
- boolean[] childs = new boolean[500];
- for(int i=0; i<childs.length; i++) {
- childs[i] = true;
- }
-
- int leftCount = childs.length;//圈里还剩下几个孩子
- int count = 0;//数数计数器
- int index = 0;//下标
-
- while(leftCount>1) {//只剩下1个时结束
- if(childs[index] == true) {//是否在圈里
- count++;//数数
- if(3 == count) {//数到3
- count = 0;//重新开始计数
- childs[index] = false;//这个孩子退出
- leftCount--;//圈里剩下孩子减1
- }
- }
- index++;//下一个
- if(index == childs.length) {//如果到了最后一个,再从0下标开始
- index = 0;
- }
- }
- //循环找出最后一个孩子的下标
- for(int i=0; i<childs.length; i++) {
- if(childs[i] == true)
- System.out.println(i);
- }
- }
复制代码 |
|