500人围成一个圈,数到3的人下个人就从1开始数.最后一个人的位置在那里?

import java.util.ArrayList;

/**
* @author WenQiang Wu
* @version Dec 28, 2009
*/
public class Count3Quit {

static int m = 0;

public static void main(String args[]) {
ArrayList<Integer> a = new ArrayList<Integer>();

for (int i = 1; i <= 500; i++) {
a.add(i);// 把每个小朋友的号码依次放入.
}
while (a.size() > 1) {
// 当a.size()==1就只有一个人了,也就没必要循环了,那就是最后一个了
for (int i = 0; i < a.size(); i++) {
m++; // 相当于报数
if (m % 3 == 0) { // 数到三的人退出
m = 0;
a.remove(i);
i--;
// 删掉了当前结点,后面的结点就会前移,就是索引会-1,
// 下一轮循环该从第i个开始,也就是现在的第i+1个人就是下一轮循环的第i个人
}
}
}
System.out.println("最后一个小朋友的号码是: " + a.get(0));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值