約瑟夫問題 C語言實現

2021-09-23 15:31:38 字數 890 閱讀 6857

約瑟夫環(約瑟夫問題)是乙個數學的應用問題:已知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 普通鍊錶轉不帶頭結點的迴圈鍊錶,就是將頭指標下移到第乙個節點位置 原來的頭結...