你的位置:首页 > Java教程

[Java教程]数3退1


我在网上找了些JAVA的视频,学习了一下。老师讲了一道题,有500个小孩拉成一个圈,开始123123这样报数,数到3的小孩退出圈外,问:剩下最后一个小孩的位置是多少。

我跟着老师的思路缕了一下,然后自己盲打了一下代码,感觉很复杂,所以把代码copy下来,留给日后复习用。(结果:435)

//数3退1public class Count3Quit1 {  public static void main(String[] args) {        boolean[] arr = new boolean[500];    for(int i = 0; i < arr.length; i++){      arr[i] = true;    }    int leftCount = arr.length;  //剩余小孩数初始化    int countNum = 0;      //计数器(数3退1)初始化    int index = 0;        //下标值初始化    while(leftCount > 1){      if(arr[index] == true){        countNum ++;        if(countNum == 3){  //计数器数到3          arr[index] = false;//从true变为false意为让小孩退出          countNum = 0;  //计数器归0          leftCount --;  //剩余小孩数-1        }      }      index ++;        //下标值      if(index == arr.length){//(0-499)当下标为第500时,一圈循环完毕,开始再一次循环,初始化下标        index = 0;      }          }    for(int i = 0; i < arr.length; i++){      if(arr[i] == true){        System.out.println(i);//打印最后剩下小孩的位置      }    }  }  }