`

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));
    }
}
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics