猴子選大王

2021-09-29 03:25:30 字數 1043 閱讀 4282

[問題描述]

要從n只猴子中選出一位大王。它們決定使用下面的方法:

n只猴子圍成一圈,從1到n順序編號。從第q只猴子開始,從1到m報數,凡報到m的猴子退出競選,下一次又從退出的那只猴子的下乙隻開始從1到m報數,直至剩下的最後乙隻為大王。請問最後哪只猴子被選為大王。

[輸入形式]

控制台輸入三個整數n,m,q。

[輸出形式]

輸出最後選為大王的猴子編號。

[樣例輸入]

7 4 3

[樣例輸出]

41、輸入n、m、q;

2、建立從1到n編號的迴圈鍊錶;

3、找到編號為q的節點,設current指向q的前一節點;

4、設計數器i為1,若i<=m:

4.1 current指向下乙個節點;

4.2 i++;

5、刪除current指向的節點;

6、將current指向被刪除節點的前乙個節點;

若迴圈鍊錶只剩乙個節點,則列印該節點的編號,否則轉向第4步。

#include

struct node

;main()

} current->next = head;

/*找到第q個猴子,current指向第q個猴子,

pre指向第q-1個猴子*/

current = tail;

for(i=

1;i<=q;i++

)/*若迴圈鍊錶只剩下乙個節點,則找到編號退出迴圈*/

while

( pre->next!=pre )

/*current指向數到m的節點,刪除並釋放該節點。*/

pre->next = current->next;

free

(current);}

printf

("%d\n"

,pre->num)

;}

猴子選大王

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

猴子選大王

問題 檔名稱 專案5.cpp 作 者 秦緒龍 完成日期 2016年9月23日 版 本 號 v1.0 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到 圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m...