约瑟夫环算法的Java实现代码

文章作者 100test 发表时间 2008:02:01 14:53:58
来源 100Test.Com百考试题网


相信大家都知道这是一个著名的算法问题,约瑟夫环的c语言实现是利用了指针链表的形式,java实现呢,我的这个是用了内部类.
算法描述:n个人围成一圈,每人有一个各不相同的编号,选择一个人作为起点,然后顺时针从1到k数数,每数到k的人退出圈子,圈子缩小,然后从下一个人继续从1到k数数,重复上面过程。求最后推出圈子的那个人原来的编号,中国自学编程网,www.zxbc.cn。

程序实现:
public class JosephCircle {
private class Node {
public Node nextnode.

public boolean flag.
}

private Node[] list.

public JosephCircle() {
list = new Node[30].
int i.
for (i = 0. i < 30. i ) {
Node node = new Node().
node.flag = true.
if (i > 0) {
list[i - 1].nextnode = node.
}
list[i] = node.
}
list[i - 1].nextnode = list[0].
}

public void start() {
Node node = list[29].
for (int i = 0. i < 135. i ) {
if ((i 1) % 8 == 0) {
node.flag = false.
node.nextnode = node.nextnode.nextnode.
} else {
node = node.nextnode.
}
}
}

public void print() {
Node node = list[29].
for (int i = 0. i < 30. i ) {
if (node.flag) {
System.out.print("#").
} else {

相关文章


JDBC中操作Blob、Clob等对象
JSF与Struts的异同
Log4j基本使用方法
Java程序中的数据过时问题
约瑟夫环算法的Java实现代码
Java中常用的加密算法MD5,SHA,RSA
Ecli eAnt开发EJB的三个习惯
ringSingleton的陷阱介绍
ringMVCframework深入总体分析
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛