约瑟夫环算法的Java实现代码 |
|
www.nanhushi.com 佚名 不详 |
相信大家都知道这是一个著名的算法问题,约瑟夫环的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(); } }
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: Linux下的Java编程 下一篇文章: Java编程技术中汉字问题的分析及解决 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|