[阅读: 507] 2005-11-05 07:56:34
public class Josephus {
public static void main(String args[])
{
int num = 10; //孩子总数
int interval = 5; //每次数interval个孩子,就让该孩子离开
int []child =new int[num+1]; //孩子树组
int []flag =new int[num+1]; //每个孩子是否在圈子的标志,1:在 0:不在
for(int i=1;i<=num;i++){
child[i]=i;
flag[i]=1; //开始每个孩子都在圈内
System.out.println("第"+i+"个孩子的名字:"+child[i]);
}
int n = 0;
int i = 3; //从第几个孩子开始
int j = 1; //从1开始记数
boolean noEnd = true; //是否结束的标志
while(noEnd)
{
while(j<interval){
i =(i+1>num?1:i+1);
j+=flag[i];
}
flag[i]=0;
n++;
if(n==num){
noEnd = false;
System.out.println("第"+i+"个孩子最后胜利");
}
else{
System.out.println("第"+i+"个孩子离开");
j=0; //j达到interval时,从新开始记数
}
}
}
}