創立乙個記錄編號的陣列,用指標在這個陣列迴圈移動計數,當計數為m時將這個元素做移除標記,直到剩下最後乙個元素。
1view codeintmain()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 }
創立乙個大小為n*n的陣列,記錄n次編號,用指標單向移動來假迴圈,當計數為m時把n個元素做移除標記,直到剩下最後乙個元素。
1 #include2view codeintmain()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 }
1 #include2 #include34view codeintmain()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 }
1 #include2 #include34view codeintmain()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 }
未完待續......
猴子選大王問題
猴子選大王 亞瑟夫換 的問題是資料結構和演算法中常見的一類問題。可以使用迴圈佇列實現,也可以使用鍊錶實現。還可以使用陣列的回溯法實現。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...