約瑟夫問題 (本題要求用迴圈鍊錶實現)
約瑟夫問題是乙個經典的問題。已知n個人(不妨分別以編號1,2,3,…,n 代表 )圍坐在一張圓桌周圍,從編號為 k 的人開始,從1開始順時針報數1, 2, 3, …,順時針數到m 的那個人,出列並輸出。然後從出列的下乙個人開始,從1開始繼續順時針報數,數到m的那個人,出列並輸出,…依此重複下去,直到圓桌周圍的人全部出列。
輸入:n, k, m
輸出:按照出列的順序依次輸出出列人的編號,編號中間相隔乙個空格,每10個編號為一行。
非法輸入的對應輸出如下
a)輸入::n、k、m任乙個小於1
輸出:n,m,k must bigger than 0.
b)輸入:k>n
輸出:k should not bigger than n.
例:輸入:9,3,2
輸出:4 6 8 1 3 7 2 9 5
測試輸入
期待的輸出
時間限制
記憶體限制
額外程序
測試用例1
1. 9,3,2↵
1.4 6 8 1 3 7 2 9 5↵
1秒64m
0測試用例2
1.10,12,3↵
1.k should not bigger than n.↵
1秒64m
0
#include
#include
intmain()
if(k>n)
struct node
;//定義結點
typedef
struct node node;
//定義node
node *head;
//說明頭指標head
node *p;
//說明乙個指向結點的指標變數p
head=
(node*
)malloc
(sizeof
(node)
);
head->num=-1
; head->next=head;
for(i=n;i>
0;i--
)while
(p->next!=head)
p=p->next;
p->next=head->next;
p=p->next;
i=1;
while
(iwhile
(p->next!=p)
s=p;
p=p->next;
q->next=p;
if(num<9)
else
}printf
("%d\n"
,p->num)
;return0;
}
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...
約瑟夫問題 約瑟夫環
約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...
約瑟夫問題
這是17世紀的法國數學家加斯帕在 數目的遊戲問題 中講的乙個故事 15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法 30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。問怎樣排法,才能使每次...