約瑟夫環(約瑟夫問題)是乙個數學的應用問題:
已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。
從1開始報數,數到m的那個人出列;
他的下乙個人又從1開始報數,數到m的那個人又出列;
依此規律重複下去,直到圓桌剩下最後乙個人,求那個人的位置。
總體思路:
1:建立鍊錶(用尾插法建立)
2:當人數大於1的時候,迴圈刪除m
4:輸出陣列的值並且釋放指標。
#include
#include
//迴圈鍊錶的方式
struct node
;int main()
else//m n不等於0的時候
p=head->next;//初始化,p是頭指標的下乙個
q=tail;//q是尾指標
i=1;
while(p!=q)//當pq不相等的時候,也就是剩下的人數大於1時
else
}head->next=q;//維持鍊錶完整性若沒有要求可以省略
answer[count]=p->data;//將找到的值賦給answer[0]。
count++;
free§;
head->next=null;}}
for(i=0;ifree(head);
return 0;
}
約瑟夫環問題的鍊錶實現
據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所...
鍊錶實現約瑟夫環
約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依 此規律重複下去,直到圓桌周圍的人全部出列。實現 include using namespace ...
用C鍊錶實現約瑟夫環問題
問題 設有n個人圍成乙個圓圈,現從第s個人開始報數,數到第m的人出列,然後從出列的下乙個人重新開始報數,數到第m的人再次出列,如此反覆,直到所有的人全部出列為止。對於任意給定的n s m,求按出列次序得到的n個人員的序列。例 就是問題簡單示例,裡面是每次要迴圈的資料,後面的s是出列的人 思路 先建立...