其实这题还是比较简单的啦,主要还是思路问题,我的思路是当14个人退出后从15个人开始重新数,当然此时的第15人在这个圈中是14,因为他取代了原来退出的14的那个人的位置! 思路:我们可以定义两个变量,一个用于记录报数的人是第几个人,另一个记录报数的总次数
步骤: A:定义count 记录次数,当count%14==0的时候,说明有人该退出了
B:定义一个循环用于记录那个人在报数,当这个报数的人报到最后一个人的时候,又从第一个人开始报数
C:一直重复上面的步骤,直到只有一个人的时候就输出这个人就行了.
语言表达能力比较差,直接上代码吧!
ArrayList<Integer> list=new ArrayList<>();
for (int i = 1; i <= 100; i++) {
list.add(i);
}
int count=0;//记录报数的次数
for (int j = 1; j <= list.size(); j++) {//j就表示是第几个人在报数
count++;
if (count%14==0) {
int a=list.get(j-1);
list.remove(j-1);
j--;
}
if (j>=list.size()&&list.size()!=1) {//当只有一个人的时候就不需要再回去了
j=0;//因为是围成一个圈所以当每个人都报数完后回到第一个人报数,因为这里放在循环的末尾,结束后j会马上自增一次
}
syso输出这个身下的数就行了
|