java 约瑟夫环 数组实现 已测试
2017-06-12 09:57
288 查看
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));
}
}
运行结果如下:
{
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));
}
}
运行结果如下:
相关文章推荐
- Java 数组实现约瑟夫环
- 队列的数组实现_JAVA描述《数据结构与算法分析》
- 数组实现的约瑟夫问题(Java)
- Java循环链表实现约瑟夫环
- Java数组实现循环队列
- JAVA实现HTTP代理上网的测试程序
- [原创]java实现约瑟夫环问题
- 数据结构复习:栈-Java数组实现
- JAVA实现:给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- 数组排序的Java实现(Sorting of arrays implemented with Java)
- 用java数组实现基本链表和可自扩充的链表
- 约瑟夫环的JAVA实现
- 在JAVA中实现图形界面退出(已测试)
- java----------测试对象类型的多态实现
- java实现合并两个数组
- 用java实现对数组的排列组合
- 约瑟夫环的java实现
- java数组与容器之间的转换,实现数组扩容
- java动态代理类,测试,实现AOP,在执行target回调方法前后插入相关代码处理
- Java实现数组排序总结篇(冒泡,选择,插入,希尔)