[問題描述]
要從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...