約瑟夫環 C語言解析

2021-09-29 19:11:52 字數 754 閱讀 5157

約瑟夫環:在我們c語言的初學基礎中,會遇到魔方陣,做遊戲踢出

佇列。都要用到迴圈陣列。魔方陣之前有講解,今天只說做遊戲踢出佇列。

這類問題有很多說法。現在我們說做遊戲退出:有n個人,在一起做遊戲,由第乙個人從1開始數,數到m,第m個人退出。接著m的下乙個人從1開始數,數到m,第m個人退出。如果說數了第n個人,那麼接著從第乙個人依次數,這樣迴圈踢人,直到遊戲僅剩餘1人。

思路

定義陣列,設定下標

做乙個計數器,記錄步數,數到m退出遊戲,下次直接跳過

記錄遊戲剩餘人數,當計數器數到m時,剩餘人數減1,計數器清零,重新計數

遊戲進行到第n個人,迴圈佇列,直到僅剩1人。

**如下

int

quarrel

(int n,

int m)

i =0;

//這時i已經走到n-1,所以i要重新賦值為1

while

(count >1)

//遊戲人數大於1,繼續遊戲

}//i++;

i =(i+1

)%n;

迴圈陣列

}for

(i =

0; i < n;i++)}

free

(arr)

;//釋放

return i+1;

}int

main()

約瑟夫環 C語言

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

C語言約瑟夫環鏈表

include include include struct link creat1 int n void out struct link head void free struct link head struct link jsf struct link head,int m struct li...

約瑟夫環問題(C語言)

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