約瑟夫環:在我們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位置後的元素後移,列表元素個...