您的位置:首页 > 其它

约瑟夫问题

2008-01-23 14:31 363 查看
package algorithms;

public class Josephus
{
public static int[] arrayOfJosephus(int number,int per)
{
int[] man=new int[number];
for(int count =1,i=0,pos=-1;count<=number;count++)
{
do
{
pos=(pos+1)%number;//实现循环
if(man[pos]==0)
{
i++;
}
if(i==per)//报数为3
{
i=0;
break;
}
}while(true);
man[pos]=count;
}
return man;
}

public static void main(String[] args)
{
int[] man=Josephus.arrayOfJosephus(41, 3);
int alive=3;

System.out.println("约瑟夫排列: ");
for(int i=0;i<man.length;i++)
{
System.out.print(man[i]+" ");
}
System.out.println(" 表示三个存活的人要放的位置: ");
for(int i=0;i<41;i++)
{
if(man[i]>alive)
{
System.out.print("D");
}
else
{
System.out.print("L");
}
if((i+1)%5==0)
{
System.out.print(" ");
}
}
System.out.println();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: