约瑟夫环第一次自我实践
(JAVA实践)
有500个小朋友, 围成一个圈,从第一个 开始数1,
数到3的小朋 友退出,后面继续从1 开始数,数到3的小朋 友退出,
这样执行下去, 最后留下的小朋友是哪 个?用数组模拟。
程序要求:需要有注释, 包括变量的定义。
public static void main(String[] args) {
// TODO Auto-generated method stub
int children[];
children=new int[500];
int j=1;
int num=500;
for(int i=0;i<500;i++)
{
children[i]=4;
}
be:for(int k=0;k<100;k++)//随机的可以用while代替
{
for(int i=0;i<500;i++)
{
if(children[i]!=0)
{
children[i]=j;
j++;
}
if(j==4)
{
j=1;
children[i]=0;
num--;
}
if(num==1)
{
break be;
}
}
}
for(int i=0;i<500;i++)//判断那个不为0则为最后一个
{
if(children[i]!=0)
{
i++;
System.out.print(i);
}
}
}
}