猴子選大王問題

2022-01-15 07:40:44 字數 1754 閱讀 8703

創立乙個記錄編號的陣列,用指標在這個陣列迴圈移動計數,當計數為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(co==m)//

當計數等於m,剔除該元素

2732

if(co!=m)//

若計數不等於m,繼續計數

3341 p++;

42 x++;

43 co++;

4445}46

if(z==n-1)47

break;//

當剩下乙個猴子時48}

49for(i=0;; i++)

5056}57

return0;

58 }

view code

創立乙個大小為n*n的陣列,記錄n次編號,用指標單向移動來假迴圈,當計數為m時把n個元素做移除標記,直到剩下最後乙個元素。

1 #include2

intmain()314

}15int *p=&v[0

];16

int z=0,co=1;//

co為計數

17for

(;;)

1829

break;30

}31}32 co=0

;33 z++;34}

35if(co!=m)

3640

while(*p==0)//

當遇到已經剔除的元素時

4144

if(z==n-1)45

break;//

當剩下乙個猴子時46}

47for(i=0; i)

4854}55

return0;

56 }

view code

1 #include2 #include34

intmain()510

int co=0,z=0

;11 i=0;12

while(1)13

18if(i+1==n)

19 i++;20}

21else

2224 i++;25}

26}27for(i=0;i)

2831

return0;

32 }

view code

1 #include2 #include34

intmain()510

int co=0,z=0

;11 i=0;12

do1320}

21}22 }while(z!=n-1

);23

for(i=0;i)

2427

return0;

28 }

view code

未完待續......

猴子選大王問題

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

猴子選大王

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

猴子選大王

問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按 照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就 要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該 猴子為大王。輸入m和n,輸出為大王的猴子是幾號。輸入描述 m個猴子和要出去的位數n。程式輸出 king是誰。inc...