演算法,約瑟夫問題

2022-01-29 20:55:02 字數 781 閱讀 2429

<?php

/** * 跟猴子問題比較相似,最後乙個是大王。約瑟夫是最後兩個是存活。

* 約瑟夫問題是個有名的問題:

* n個人圍成一圈,從第乙個開始報數,第m個將被殺掉,最後剩下乙個,其餘人都將被殺掉。

* 例如n=6,m=5,被殺掉的順序是:5,4,6,2,3,1。

*/ function getlasttwo() else

}// 輸出活著的人

foreach($people_arr as $alive)

} getlasttwo();

結果:

死了3

死了6死了9

死了12

死了15

死了18

死了21

死了24

死了27

死了30

死了33

死了36

死了39

死了1死了5

死了10

死了14

死了19

死了23

死了28

死了32

死了37

死了41

死了7死了13

死了20

死了26

死了34

死了40

死了8死了17

死了29

死了38

死了11

死了25

死了2死了22

死了4死了35

我16還活著!

我31還活著!

約瑟夫問題o n 演算法

宣告 本文僅為個人查閱方便所轉,版權為原文作者 本演算法僅適用於找出最後的勝利者,而不是得到出列序列。此方法從考慮n 1個人中最終勝利者 最後乙個沒有出列的人是誰 遞推到n個人時最終勝利者是誰。但是並不能得到出列的序列。無論是用鍊錶實現還是用陣列實現都有乙個共同點 要模擬整個遊戲過程,不僅程式寫起來...

約瑟夫演算法問題

n 個人圍成一圈,從第乙個人開始報數,數到 m 的人出列,再由下乙個人重新從 1 開始報數,數到 m 的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號。輸入兩個整數 n,m。輸出一行 n 個整數,按順序輸出每個出圈人的編號 1 m n 100 1 leq m,n leq 100 1 ...

演算法總結 約瑟夫問題

約瑟夫問題 有 只猴子,按順時針方向圍成一圈選大王 編號從 到 從第 號開始報數,一直數到 數到 的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下乙隻猴子時,這個猴子就是猴王,程式設計求輸入 後,輸出最後猴王的編號。輸入資料 每行是用空格分開的兩個整數,第乙個是 n,第二個是 m...