約瑟夫環問題 C語言

2021-10-02 06:32:42 字數 667 閱讀 2964

問題描述:

編號是1,2,……,n的n個人按照順時針方向圍坐一圈,每個人只有乙個密碼(正整數)。一開始任選乙個正整數作為報數上限值m,從第乙個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人全部出列為止。設計乙個程式來求出出列順序。

演算法設計與分析

可用陣列來解決這個約瑟夫環問題,即從第1開始數,從陣列下標為0開始,移動陣列下標,當數到m時,輸出此時的陣列元素下標,並且將此陣列元素賦值為0,當數到陣列的最後乙個元素後,繼續從陣列下標為0處接下去,讓陣列形成乙個迴圈,當判斷到某個陣列元素為0時,不計數,直到下乙個陣列元素不為0。

#include

intmain()

++j;

if(j>=n)

j=0;

//形成迴圈

if(a[j]!=0

)++i;

}return0;

}

執行結果:

約瑟夫環問題(C語言)

n個人站成一圈,每個人有不同的編號i,從編號為1的人開始順時針防線迴圈報數,數到m的人出列。然後從出列者的下乙個人重新報數,如此重複,直到全部出列。輸出n個人的出列順序。元素位置標記為0,1,2,n 1。設t為輸出元素位置,初始值0,則輸出元素位置為t t m 1 n t位置後的元素後移,列表元素個...

約瑟夫環問題(C語言)

問題描述 n個人站成一圈,每個人有不同的編號i,從編號為1的人開始順時針防線迴圈報數,數到m的人出列。然後從出列者的下乙個人重新報數,如此重複,直到全部出列。輸出n個人的出列順序。思路 元素位置標記為0,1,2,n 1。設t為輸出元素位置,初始值0,則輸出元素位置為t t m 1 n t位置後的元素...

約瑟夫環 C語言

約瑟夫 joseph 問題的一種描述是 編號為1,2,3,n的n個人按順時針方向圍坐一圈。每人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數,令其出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新報數,如此下去...