public static void main(String[] args) {
int[] person = new int[100];
for (int i = 0; i < person.length; i++) {
person[i] = i + 1;
}
int num = 100;
int count = 1;
while (num > 1) {
for (int i = 0; i < 100; i++) {
if (person[i] == 0) {
continue;
}
if (count % 3 == 0) {
person[i] = 0;
num--;
}
count++;
}
}
for (int i = 0; i < person.length; i++) {
if (person[i] != 0) {
System.out.println("剩余的那个人原来的位置时" + person[i]);
}
}
}
或者采用另一种写法哦:
public static void main(String[] args) {
List<Integer> list =new LinkedList<Integer>();
for(int i=1 ; i<= 100 ; i++) list.add(i); //添加100个编号对应每一个人
int j =0; //记录报数次数
while(list.size()!=1){ //list中剩下一个人得时候跳出循环
int k =list.remove(0) ; //删除第一个元素即报数的人
j++; //每次报数后 j+1
if(j%3!=0) list.add(k) ; //如果j不是3得倍数 把刚报完数字的人放在队伍的最后面
}
System.out.println(list.get(0)); //剩下的最后一个就是我们需要的编号
}
效果图:
这次分享就结束啦,感谢大家支持哟~