約瑟夫環(約瑟夫問題)是乙個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0~n-1,最後 [1] 結果+1即為原問題的解。
#include
#include
typedef struct node
lnode,
*linklist;
void
createlinklist_l
(linklist l
,int n)
;void
josephus
(linklist l
,int n,int m,int k)
;void
main()
void
createlinklist_l
(linklist l
,int n)
r->next =l;
}void
josephus
(linklist l
,int n,int m,int k)
//m = 3 , k = 2
while
(p->next != p)
s = p;
p = p-
>next;
q->next = p;
printf
("%d號淘汰!\n"
,s->local)
;free
(s);
j =1;
}printf
("%d勝出!"
,p->local)
;}
約瑟夫問題,「遍歷」思想 C語言實現
題目 乙個旅行社要從n個遊客中選出一名遊客,為他提供免費旅行服務,選擇方法是讓n個遊客圍成乙個圓圈,然後從信封中取出一張紙條,用上面寫著的正整數m作為報數值,第乙個人從1開始乙個人乙個人按順時針報數,報到第m個遊客時,令其出列。然後再從下乙個人開始,從1順時針報數,報到第m個遊客,再令其出列 直到圓...
約瑟夫環問題的C語言實現
約瑟夫環問題是迴圈中的乙個經典問題,它有多個版本,我們這次選擇最常見的,即被點到出局不再計入迴圈型。n個人圍成一圈,編號從1 n,第乙個人從1數起,數到7的那個人就被淘汰出局,接下來的人又從1數起,數到7再次被淘汰 如果人數不滿7個,則迴圈著數 最後剩下的乙個人就是贏家 主函式已經給出 includ...
C語言 實現約瑟夫環
鏈式解法 include include typedef struct sqlist sqlist 建立解約瑟夫環需要的鍊錶,該鍊錶不帶頭節點 sqlist creatlist int length p next null 普通鍊錶轉不帶頭結點的迴圈鍊錶,就是將頭指標下移到第乙個節點位置 原來的頭結...