题目是:有500个人手拉着手,从第一个开始数,1,2,3,数到第三个的时候将第三个去掉,然后继续从第四个开始数1,2,3,又将第三个去掉,继续反反复复的数下去直到还有一个人。
- public static void main(String []args){
- //定义一个数组用来当做500个人.并且初始化为true表示都在圈内
- boolean arr[] =new boolean[500];
- for(int i=0; i<arr.length; i++){
- arr[i]=true;
- }
- //定义一个总人数
- int count=arr.length;
- //定义一个索引位置,表示当前在那个位置
- int index=0;
- //计数器,数到3退出
- int countNum=0;
- //如果只剩下最后一个人就退出循环
- int jj=1;
- while(count>1){
- System.out.print(count+" ");
- if(arr[index]==true){ //如果当前的这个人在圈内就开始数数
- countNum++;
- if(countNum==3){
- jj++;
- System.out.print("第"+jj+"圈");
- countNum=0; // 如果数到3了就要把计数器归0
- arr[index]=false; //表示这个人已经退出
- count--; //总人数减去一个
- }
- }
- index++;
- if(index==arr.length){
- index=0;
- }
- }
- //找到最后一个在圈子内的人的下标位置
- for(int i=0 ;i<arr.length; i++){
- if(arr[i]==true){
- System.out.println("最后剩下的一个人在第"+(i+1)+"个位置");
- }
- }
- }