約瑟夫環 C 實現

2021-08-03 20:28:29 字數 636 閱讀 5857

#include 

using

namespace

std;

void main()

int rem = n;//桌上剩餘人數

int pos = 0;//當前開始計數人的位置

int count = 0;//當前計數大小

//一直迴圈到桌上只剩乙個人

while (rem>1)

if (a[pos] == true)

}++pos;

}//輸出桌上剩餘的最後乙個人(陣列下標從0開始,而我們習慣從1開始,所以在輸出是下標加1)

for (int i = 0; iif (*(a+i) == true)

}system("pause");

}

實驗演示(為了便於理解,部落格中的注釋均為漢語,我自己的**注釋為英文):

參考的博文如下:

約瑟夫環問題

約瑟夫環 C 實現

1.題目 編號為1,2,n的n個人按順時針方向圍坐,每人手裡持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向從1開始順序報數,報到m時停止,報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止.2.方...

約瑟夫環實現

約瑟夫環問題,這是乙個很經典演算法,處理的關鍵是 偽鍊錶 問題描述 n個人圍成一圈,從第乙個人開始報數,報到m的人出圈,剩下的人繼續從1開始報數,報到m的人出圈 如此往復,直到所有人出圈。模擬此過程,輸出出圈的人的序號 1 2 3 4 5 6 7 8 3,6 出圈 剩下7 8 1 2 4 5 7 8...

C語言 實現約瑟夫環

鏈式解法 include include typedef struct sqlist sqlist 建立解約瑟夫環需要的鍊錶,該鍊錶不帶頭節點 sqlist creatlist int length p next null 普通鍊錶轉不帶頭結點的迴圈鍊錶,就是將頭指標下移到第乙個節點位置 原來的頭結...