約瑟夫問題

2021-10-07 07:35:30 字數 1727 閱讀 8317

用單向迴圈鍊錶來表示圈,將人殺死後修改鍊錶上的節點即可。

package linkedlist;

// 約瑟夫問題:環形鏈

public

class

josepfu

}// 構建乙個環形鏈的class

class

circularlinkedlist

// 輸入數字為1

firstperson =

newperson(1

);if(number==1)

//輸入數字大於1

for(

int i=

2;i<=number;i++

) tempperson.

setnext

(currentperson)

; currentperson.

setnext

(firstperson)

; tempperson = currentperson;}}

/* * 檢視環裡的詳情

*/public

void

showperson()

person tempperson = firstperson;

//用於遍歷節點的臨時變數

while

(true)}

}/** 約瑟夫問題的解決方案

*/public

void

josepfu

(int startnum,

int eliminatepersonindex,

int wholenum)

if(firstperson == null)

if(wholenum<1)

int count =0;

//用於計數

// 找到最開始計數的那個人

for(

int i=

0;i< wholenum + startnum-

1;i++

)// 遍歷

while

(count

// 去掉該該節點

system.out.

printf

("第%d個人要去掉\n"

,currentperson.

getnum()

);

currentperson = currentperson.

getnext()

; tempperson.

setnext

(currentperson)

;//去掉乙個節點就計數一次

count++;}

}}// 建立乙個person類

class

person

// 獲取每乙個節點的no序號

public

intgetnum()

// 新增人到環中

public

void

setnext

(person next)

// 獲取每乙個節點的next節點

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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