java 约瑟夫环 数组实现 已测试

来源:互联网 发布:萨德事件 知乎 编辑:程序博客网 时间:2024/06/01 08:38
class  YueSeFu
{
    public static int circleRun(int person , int num)
{
int array[] = new int[person];
int flag = 0;
        int person_flag=0;


//-----------------初始化数组--------------------
        for (int i = 0; i < person ; i++ )
        {
array[i] = i+1;
        }
//----------------执行约瑟夫环规则---------------------
while(person>1)
{
for (int i = 1; i <= num ; i++, flag++ )
{
if (flag == array.length)
{
                   flag = 0;
}
while(array[flag]==0)
{
flag++;
                    if (flag == array.length)
    {
                       flag = 0;
    }
}
if (i==num )
{
array[flag] = 0;
person--;
}
}
}
//----------------遍历数组,不为零则返回--------------------
        for (int i = 0; i<array.length ; i++ )
        {
if (array[i]!=0 )
{
                person_flag = array[i];
}
        }

return person_flag

}


public static void main(String[] args)

{
System.out.println("最后一个人的编号为:"+ circleRun(14,3));
System.out.println("最后一个人的编号为:"+ circleRun(11,3));
System.out.println("最后一个人的编号为:"+ circleRun(2,3));
System.out.println("最后一个人的编号为:"+ circleRun(2,2));
System.out.println("最后一个人的编号为:"+ circleRun(3,3));
}

}


运行结果如下: