Discuz!NT
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
商都网教育宝典宝库

发表新主题 回复该主题
本主题被查看355次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: 约瑟夫环算法的Java实现代码
-[尕硴]
超级版主
UID: 71
来自:
精华: 130
积分: 14003
帖子: 12909
注册: 2007-10-22 17:59:00
状态: 离线
威望: 444.00
金钱: 3355.00 元
只看楼主 2008-01-28 10:01
约瑟夫环算法的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();   
    }   
}
#1  
发表新主题 回复该主题
本主题被查看355次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-10-08 17:22:23

版权所有 商都网教育宝典
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.128 seconds