天天看点

约瑟夫环生者(JAVA)

内容要求:

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,问他俩站在那两个位置才能活着留下。并打印出死亡位置

public static int N = 20;
    public static int M = 5;//数到M就咔擦一个人

    public void FromJava() {
        killNode();
    }

    public class  Node {
        int val;//下标
        Node next;
        public Node(int val){
            this.val = val;
        }
    }

    public void  killNode() {
//        Node header = new Node(1);
//        Node x = header;
//        for (int i = 2; i <= N; i++) {
//            x.next = new Node(i);
//            x = x.next;
//        }
//        x.next = header;
//        System.out.println("被咔擦的顺序为:");
//        while (x!=x.next){
//            for(int i = 1;i<M;i++){
//                x = x.next;
//            }
//            System.out.println(x.next.val+"被干掉 ");
//            x.next = x.next.next;
//        }
//        System.out.println("最后这个幸运儿是:"+x.val);
        Node header= new Node(1);
        Node x =header;
        for (int i=2 ;i<=N;i++ ){
            x.next=new Node(i);
            x=x.next ;

        }
        x.next=header;
        while (x!=x.next){
            for (int i=0 ;i<M;i++){

                x =x.next;
            }
            System.out.println(x.next.val+"被干掉 ");
            x.next=x.next.next;
        }

        System.out.println("最后这个幸运儿是:"+x.val);
    }
      
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 6被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 12被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 18被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 4被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 11被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 19被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 7被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 15被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 3被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 14被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 5被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 17被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 10被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 8被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 2被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 9被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 16被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 13被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 1被干掉 
10-19 17:12:49.041 3042-3042/com.vise.snowdemo I/System.out: 最后这个幸运儿是:20
      

继续阅读