数3退1
我在网上找了些JAVA的视频,学习了一下。老师讲了一道题,有500个小孩拉成一个圈,开始123123这样报数,数到3的小孩退出圈外,问:剩下最后一个小孩的位置是多少。
我跟着老师的思路缕了一下,然后自己盲打了一下代码,感觉很复杂,所以把代码copy下来,留给日后复习用。(结果:435)
//数3退1 public 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);//打印最后剩下小孩的位置 } } } }