一群猴子要選新猴王。新猴王的選擇方法是:讓n只候選猴子圍成一圈,從某位置起順序編號為1~n號。每只猴子預先設定乙個數(或稱定數),用最後乙隻猴子的定數d,從第一只猴子開始報數,報到d的猴子即退出圈子;當某只猴子退出時,就用它的定數決定它後面的第幾隻猴子將在下次退出。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請輸出猴子退出圈子的次序以及當選的猴王編號。
函式介面定義:
int
kingofmonkey
(int n,linklist *head)
;
裁判測試程式樣例:
#include
#include
typedef
struct node /*這個結構型別包括三個域 */
linklist;
linklist *
createcircle
(int n )
;linklist *
deletenext
(linklist *p)
;/* 刪除單迴圈鍊錶的p所指的下乙個結點 */
intmain()
輸入樣例:
在這裡給出一組輸入。例如:
532
143
輸出樣例:
在這裡給出相應的輸出。例如:
delete no:
3delete no:
4delete no:
5delete no:
1the king is monkey[2]
.
我的答案
linklist *
createcircle
(int n )
p =(linklist*
)malloc
(sizeof
(linklist));
scanf
("%d"
,&p->mydata)
; p->number =1;
head=q=p;
for(i=
2; i<=n; i++
) p->next = head;
// for ( p = head; ; p = p->next )
// printf("%d %d\n", p->number, p->mydata);
return head;
}linklist *
deletenext
(linklist *p)
intkingofmonkey
(int n, linklist *head)
p=tail;
t=tail->mydata;
while(1
) q=p->next;
deletenext
(p); count--;if
(count==1)
break;
t=q->mydata;
}return p->number;
}
PTA 猴子選大王
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...
PTA 5 28 猴子選大王
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...
鍊錶經典問題 猴子選大王
n 只猴子要選大王,選舉方法如下 所有猴子按1,2 n 編號並按照順序圍成一圈,從第 1個猴子起,由 1開始報數,報到 m時,該猴子就跳出圈外,下乙隻猴子再次由 1開始報數,如此迴圈,直到圈內剩下乙隻猴子時,這只猴子就是大王。include includeusing namespace std ty...