public static void main(String[] args) { /* * 300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子, * 问最后剩下的一个是从指定位置开始计数的第几个人? */ int num[]=new int[300]; int i=0; // 数组的下标计数器 0---299 int count=0; // 退出的人数计数器 0---299 int n=1; // 数数的计数器 1---3 while(count<299){ // 数组的值如果是1,代表该位置的人不存在 // 不存在的位置则直接跳过 if(num[i]==1){ i++; if(i>299) i=0; continue; } // 数数计数器值为3,代表该位置上的人需要退出 if(n==3){ num[i]=1; // 代表退出 count++; // 退出的人数计数器累加 // System.out.println("退出序号:"+(i+1)+",计数器:"+count); } n++; if(n>3) n=1; i++; if(i>299) i=0; } // System.out.println(count); for(i=0; i<num.length; i++){ if(num[i]==0){ System.out.println("最后剩下的序号为:"+(i+1)); } } }
时间: 2024-10-29 19:06:36