約瑟夫殺人法

約瑟夫殺人法是這樣一個場景:一群人手拉手圍成一個圈,依次數(shù)數(shù),數(shù)到特定的數(shù)的那個人就被槍斃,然后他的前后的人手拉手,最后只剩下一個人。這種就是數(shù)據(jù)結(jié)構中的單向循環(huán)列表模型。

/**
 * 約瑟夫殺人法
 * @author Luffy
 *
 */
public class Joseph {
    
    public static int M=20;
    public static int N=5;

    /**
     * @param args
     */
    public static void main(String[] args) {
        //創(chuàng)建一個循環(huán)單向鏈表:
        Node head = new Node(1);
        Node node = head;
        for(int i=2;i<=M;i++){
            Node n = new Node(i);
            node.next = n;
            node = n;
            if(i==M) {
                node.next = head;
            }
        }
        //注意node的初始位置,這個隨你定
        int i=1;
        while(node.next != node) {
            if(i%4 == 0) {//數(shù)到4,將后一個槍斃
                System.out.println("kill:"+node.next.data);
                node.next = node.next.next;
            }
            node = node.next;
            i++;
        }
        System.err.println("剩下:"+node.data);
    }
    
    static class Node{
        public int data;
        public Node next;
        Node(int data) {
            this.data = data;
        }
    }

}

kill:4
kill:9
kill:14
kill:19
kill:5
kill:11
kill:17
kill:3
kill:12
kill:20
kill:8
kill:18
kill:10
kill:2
kill:16
kill:15
kill:1
kill:7
kill:13
剩下:6
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容