C語言利用陣列實現約瑟夫環

2021-08-21 16:12:15 字數 662 閱讀 8058

我作為乙個初學者,認為約瑟夫環問題最難解決的問題,可能是將直線的資料變成環型迴圈。

在網上看到很多關於這個問題的解法,但我覺得不是自己的思路,就自己根據網上查詢的內容進行了乙個整合。

(看了csdn和知乎的大神的思路的整合)

我是這樣考慮問題的。

從頭到尾的一圈人,如何判斷誰出去,誰不出去?

可以設乙個標記來判斷,這個標記你可以給他設0或1這樣簡單的數字作為篩選,將陣列元素全部初始化為0,出去的人記作1。

到達陣列最後乙個格仔的時候,立刻把n賦值為-1,這樣就能圍成乙個圈了。

出去的人不會被累加器識別,輸出陣列下標+1(陣列是從0開始),for迴圈到最後,出列人數為所有人,且所有人標記為1,迴圈結束。順序輸出到螢幕上。

**如下。

#include"stdio.h"

int main()

;  //_outpeople為出列人數,sum為計數器,給初始陣列全部元素賦值為0

scanf("%d %d",&n,&i); //n為你所選擇開始的人,而i是數到第幾個人出列

for(n;_outpeople<10;n++) 

if(sum==i)//判斷計數器是否達到i值,如果是,標記為1,出列人數+1,輸出陣列下標。 

if(n==9) 

}return 0;

}

約瑟夫環(陣列實現)

有 m 個人,每次數 n 個殺死,問從第幾個開始數可以保證第乙個人活到最後。include define ll long long define inf 0x3f3f3f3f define endl n using namespace std const int n 1e6 100 int a n ...

C語言 實現約瑟夫環

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

C語言實現約瑟夫環

直接上 define crt secure no warnings include includetypedef struct listnode listnode void create listnode firstnode,int m 建立單向迴圈鍊錶 int i listnode pre fir...