約瑟夫問題

2021-10-04 21:32:23 字數 1057 閱讀 7384

1.約瑟夫問題

傳說有這樣乙個故事,在羅馬人占領喬塔帕特後,39 個猶太人與約瑟夫及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,第乙個人從1開始報數,依次往後,如果有人報數到3,那麼這個人就必須自殺,然後再由他的下乙個人重新從1開始報數,直到所有人都自殺身亡為止。然而約瑟夫和他的朋友並不想遵從。於是,約瑟夫要他的朋友先假裝遵從,他將朋友與自己安排在第16個與31個位置,從而逃過了這場死亡遊戲 。

41個人坐一圈,第乙個人編號為1,第二個人編號為2,第n個人編號為n。

1.編號為1的人開始從1報數,依次向後,報數為3的那個人退出圈;

2.自退出那個人開始的下乙個人再次從1開始報數,以此類推;

3.求出最後退出的那個人的編號。

public

class

josephtest

//如果不是第乙個結點

node

newnode =

newnode

<

>

(i, null)

; pre.next=newnode;

pre=newnode;

//如果是最後乙個結點,那麼需要讓最後乙個結點的下乙個結點變為first,變為迴圈鍊錶了

if(i==41)

}//2.需要count計數器,模擬報數

int count=0;

//3.遍歷迴圈鍊錶

//記錄每次遍歷拿到的結點,預設從首結點開始

node

n = first;

//記錄當前結點的上乙個結點

node

before = null;

while

(n!=n.next)

else

}//列印最後乙個元素

system.out.

println

(n.item);}

//結點類

private

static

class

node

}}

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...

約瑟夫問題 約瑟夫環

約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...

約瑟夫問題

這是17世紀的法國數學家加斯帕在 數目的遊戲問題 中講的乙個故事 15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法 30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。問怎樣排法,才能使每次...