java實現約瑟夫問題

2021-06-22 23:24:35 字數 1485 閱讀 7231

原始問題描述:據說著名猶太歷史學家josephus有過以下的故事:在羅馬人占領喬塔帕特後,39個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josephus和他的朋友並不想遵從。首先從乙個人開始,越過k-2個人(因為第乙個人已經被越過),並殺掉第

k個人。接著,再越過k-1個人,並殺掉第

k個人。這個過程沿著圓圈一直進行,直到最終只剩下乙個人留下,這個人就可以繼續活著。問題是,給定了和,一開始要站在什麼地方才能避免被處決?josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,於是逃過了這場死亡遊戲。

《具體數學:電腦科學基礎:第2版》,

人民郵電出版社,

2013:7

.

//author:bonjean

//功能:實現約瑟夫問題

//package package_02;

public class josephq

}//create class child

class child

}//create a cycle link

class cyclink

//set k

public void setk(int k)

//set m

public void setm(int m)

//start up game

public void play()

system.out.print("the quiter'snumber:");

while(len!=0)

temp=temp.nextchild;

}//the onequit

temp2.nextchild=temp.nextchild;

system.out.print(temp.no+"");

temp=temp.nextchild;

this.len--;

} }public void createlink()elseif(i==len)else

} }public void show()while(temp!=this.firstchild);

system.out.println();

}}

參考文獻

[1]  ronald l.graham,donald e.knuth,oren patashnik

.《具體數學:電腦科學基礎:第2版》

:人民郵電出版社

,2013:7.

Java實現約瑟夫問題

有這樣乙個問題,有n個人圍成一圈做遊戲,編號為1 2 3 1,讓第m個人開始報數,報到底k個數的那個人出隊,出隊的下乙個人繼續報數,報到第k個數的人再出隊。以此類推,求出最後乙個出隊的人。這個問題可以轉化成資料結構的迴圈鍊錶問題。具體抽象為建立迴圈鍊錶,輸出鍊錶,按照題意找到符合要求的那個結點並刪除...

python實現約瑟夫 約瑟夫問題python實現

python語言之如何實現約瑟夫環問題 def josephus n,m if type n 60個人從1開始編號每人拿乙個號碼牌排成圈,從 1開始報數,第一次報數 totalnum 猴子總數 startnum 開始序號 intervalnum 間隔數def kingelect totalnum,s...

約瑟夫問題的實現

約瑟夫問題的實現 2000 ms 65535 kb 2816 8761 n個人圍成乙個圈,每個人分別標註為1 2 n,要求從1號從1開始報數,報到k的人出圈,接著下乙個人又從1開始報數,如此迴圈,直到只剩最後乙個人時,該人即為勝利者。例如當n 10,k 4時,依次出列的人分別為4 8 2 7 3 1...