C 解題 猴子選大王

2021-10-01 12:20:36 字數 761 閱讀 3587

一群猴子要選新猴王。新猴王的選擇方法是:讓m只候選猴子圍成一圈,從某位置起順序編號為1~m號。從第1號開始報數,每輪從1報到n,凡報到n的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始重新報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?

思路1:

利用陣列int n[m],都初始化為1,淘汰的標記為0,往復迴圈操作,剩下最後乙個陣列元素1的下標+1即是答案。

參考**:

#include

using

namespace std;

intwhoismonkeyking

(int

,int);

intmain()

intwhoismonkeyking

(int m,

int n)

//m為猴子個數,n為最大報數

int*p =

newint

[m];

int*q = p,m = m;

int res;

for(

int i=

0; i)while

(m!=1)

if(*q++==1

)}*(q-1)

=0;--m;

}for

(int i=

0; i)else

continue;}

delete

p;return res;

}

思路2:

利用鍊錶

C 猴子選大王

要求編寫乙個函式king,實現猴子選大王的功能。新猴王的選擇方法是 讓n只候選猴子圍成一圈 最多100只猴子 從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。測試輸入 5 預...

猴子選大王

方法一 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...