天天看點

約瑟夫環生者(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
      

繼續閱讀