设为首页 加入收藏

TOP

约瑟夫环算法的Java实现代码
2014-11-18 23:39:49 】 浏览:4533
Tags:约瑟夫 算法 Java 实现 代码

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


程序实现:
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 {
System.out.print("@");
}
node = node.nextnode;
}
}

public static void main(String[] args) {
JosephCircle jc = new JosephCircle();
jc.start();
jc.print();
}
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JVM基础概念总结:数据类型、堆与栈 下一篇对Java程序多态性支持的改进

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目