约瑟夫问题
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();
}
}
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();
}
}
相关文章推荐
- 约瑟夫问题的数学方法
- Actionscript 3.0实现的约瑟夫问题
- 3517 And Then There Was One 约瑟夫问题
- 约瑟夫的幸存者问题
- 约瑟夫问题 双链表实现
- PHP基于关联数组20行代码搞定约瑟夫问题示例
- 约瑟夫问题--双向循环链表的创建与删除
- Wiki OI 1282 约瑟夫问题
- Josephus约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题的PHP实现——猴子选大王的问题
- 数据结构与算法——约瑟夫问题
- 约瑟夫问题的解法-良好接口的重要性
- POJ_1781_In Danger_约瑟夫问题
- 约瑟夫问题递归求解
- UVa 10940 Throwing cards away II (约瑟夫问题)
- 约瑟夫问题
- 第二十四周项目4-猴子选大王(约瑟夫问题)
- 利用循环链表实现约瑟夫问题的求解
- 约瑟夫问题(动态规划解法)