猴子選大王問題
: 一堆猴子都有編號,編號是1,2,3 ...m ,這群猴子(m個)按照1到m的順序圍坐一圈,
從第1開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。
經典演算法(c#版本)
1public
int king(int m, intn)2
經典演算法(python版本py 2.7)
1defking(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 當猴子數...