猴子選大王問題(Monkey King)

2022-03-06 18:34:46 字數 961 閱讀 2671

猴子選大王問題

: 一堆猴子都有編號,編號是1,2,3 ...m ,這群猴子(m個)按照1到m的順序圍坐一圈,

從第1開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。

經典演算法(c#版本)

1

public

int king(int m, intn)2

經典演算法(python版本py 2.7)

1

defking(m,n):

2 l,i=range(m),0 #

構造list代表猴子,i記錄點名的次數,沒點名時候記0

3while len(l)>1: #

當猴子數目大於乙個時候

4 k=l.pop(0) #

點到名字的猴子出列

5 i+=1 #

點名次數+1

6if i%n!=0: #

不是n*x次被點名的猴子站到隊伍末尾,等待再次被點名78

return l[0]+1 #

返回猴子的編號 list index預設0開始

monkeyking

特例時候的(python版本py 2.7)

1

#5隻猴一圈,點到第3個時候出圈

2 l=range(5)

3while (len(l)>1):45

6l.pop(0)

7print l[0]+1

猴子選大王問題

猴子選大王 亞瑟夫換 的問題是資料結構和演算法中常見的一類問題。可以使用迴圈佇列實現,也可以使用鍊錶實現。還可以使用陣列的回溯法實現。m只猴子要選大王,選舉辦法如下 所有猴子按1,2 n編號圍成一圈,從第一號開始順序1,2 m,凡是報m號的退出圈外,如此迴圈報數直到圈內只剩乙隻猴子時這只猴子就是大王...

猴子選大王問題

創立乙個記錄編號的陣列,用指標在這個陣列迴圈移動計數,當計數為m時將這個元素做移除標記,直到剩下最後乙個元素。1 intmain 211 int p v 0 12 int z 0,x 1,co 1 z為剔除元素個數,x為元素在陣列中位置,co為計數 13for 1423 p 24 x 25 26if...

猴子選大王

方法一 include int main 初始化猴子全沒出局 值為0 int count 0 排除的猴子數量 int key 0 剩下的資料索引,即最後要得到的是陣列中第幾隻猴子是大王 int i 0,index 0 i代表計數器1 7,index代表陣列下標 while count 14 當猴子數...