我在网上找了些java的视频,学习了一下。老师讲了一道题,有500个小孩拉成一个圈,开始123123这样报数,数到3的小孩退出圈外,问:剩下最后一个小孩的位置是多少。
我跟着老师的思路缕了一下,然后自己盲打了一下代码,感觉很复杂,所以把代码copy下来,留给日后复习用。(结果:435)
//数3退1publicclassCount3Quit1 {publicstaticvoidmain(String[] args) {
boolean[] arr=newboolean[500];for(inti =0; i < arr.length; i++){
arr[i]=true;
}intleftCount = arr.length;//剩余小孩数初始化intcountNum =0;//计数器(数3退1)初始化intindex =0;//下标值初始化while(leftCount >1){if(arr[index] ==true){
countNum++;if(countNum ==3){//计数器数到3arr[index] =false;//从true变为false意为让小孩退出countNum =0;//计数器归0leftCount --;//剩余小孩数-1}
}
index++;//下标值if(index == arr.length){//(0-499)当下标为第500时,一圈循环完毕,开始再一次循环,初始化下标index =0;
}
}for(inti =0; i < arr.length; i++){if(arr[i] ==true){
System.out.PRintln(i);//打印最后剩下小孩的位置}
}
}
}