日期:2014-05-20 浏览次数:20808 次
public class Monkey {
    //all代表围成圈的个数,interval代表报数间隔
    public static void last(int all, int interval) {
        //初始化
        boolean[] flag = new boolean[all];
        for (int i = 0; i< all; i++)
            flag[i] = true;
        
            
        int i = 0, j=0; //i代表所有人数的位置,j计数,代表1到interval
        int end = all;    //记录剩余的人数,初始化为all
        
        //只要剩余的大于 ,就一直循环
        while (end > 1) {
            if (flag[i]) {            //从没有退出圈子的开始报数
                j++;
            }
            if (j == interval) {    //如果计数等于interval,就退出圈子    
                j = 0;                //j重新计数
                flag[i] = false;    //退出圈子,标记
                end--;                //剩余个数减1
            }
            i++;
            if (i == all) i=0; //一遍循环结束后,i归0,从头开始
        }
        
        for (int k=0; k< all; k++) {
            if (flag[k]) 
                System.out.println("大王的位置为: " + (k+1));
        }        
    }
    
    public static void main(String[] args) {
        last(15,7);
    }
}