C語言程式設計 猴子選大王 鍊錶應用

2022-02-20 16:08:31 字數 1166 閱讀 1531

description

有n只猴子,從1~n進行編號。它們按照編號的順時針方向排成乙個圓圈,然後從第一只猴子開始報數。第一只猴子報的第乙個數字為1,以後每只猴子報的數字都是它們前面猴子所報數字加1。如果乙個猴子報的數字是m,則該猴子出列,下乙個猴子重新從1開始報數,直到所有猴子都出列為止,最後乙個出列的猴子勝出。你的任務是對於給定猴子數量和報數上限值m,確定出能夠被選作大王的猴子的編號。

input

第一行為乙個整數n,表示測試資料的組數,接下來的n行中每行包含兩個整數,第乙個數是猴子的個數,第二個數是報數上限值m(m>1),兩數之間由空格分隔。

output

輸出共n行,每行為對應輸入行獲勝猴子的編號。

sample input

8 55 8

sample output

#include #include /* 定義鍊錶節點型別 */

typedef struct node

linklist;

int creat(int n, int m)

p = head;

/* 儲存節點總數 */

total = n;

q = head;

/* 只剩乙個節點時停止迴圈 */

while (total != 1)

/* q 指向 p 節點的前驅 */

while (q->next != p)

/* 刪除 p 節點 */

q->next = p->next;

/* 儲存被刪除節點指標 */

s = p;

/* p 指向被刪除節點的後繼 */

p = p->next;

/* 釋放被刪除的節點 */

free(s);

/* 節點個數減一 */

total--;

}//free(p);

/* 列印最後剩下的節點序號 */

int vsdata=p->data;

free(p);

return vsdata;

}int main()

for (int ii=0;iireturn 0;

}

鍊錶 PTA 猴子選大王

一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。每只猴子預先設定乙個數 或稱定數 用最後乙隻猴子的定數d,從第一只猴子開始報數,報到d的猴子即退出圈子 當某只猴子退出時,就用它的定數決定它後面的第幾隻猴子將在下次退出。如此不斷迴圈,最後剩下的乙隻猴子就選...

(C語言)猴子選大王

問題描述 要從n只猴子中選出一位大王。它們決定使用下面的方法 n只猴子圍成一圈,從1到n順序編號。從第q只猴子開始,從1到m報數,凡報到m的猴子退出競選,下一次又從退出的那只猴子的下乙隻開始從1到m報數,直至剩下的最後乙隻為大王。請問最後哪只猴子被選為大王。輸入形式 控制台輸入三個整數n,m,q 輸...

鍊錶經典問題 猴子選大王

n 只猴子要選大王,選舉方法如下 所有猴子按1,2 n 編號並按照順序圍成一圈,從第 1個猴子起,由 1開始報數,報到 m時,該猴子就跳出圈外,下乙隻猴子再次由 1開始報數,如此迴圈,直到圈內剩下乙隻猴子時,這只猴子就是大王。include includeusing namespace std ty...