#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 普通鍊錶轉不帶頭結點的迴圈鍊錶,就是將頭指標下移到第乙個節點位置 原來的頭結...