C 約瑟夫(Josephus)問題

2021-09-06 04:00:19 字數 754 閱讀 8748

一、題目:約瑟夫問題:n個人圍成一桌,數到m的人出列

二、實現方法1:

每齣列乙個,就往前移動陣列,用求餘解決到尾問題

// 每齣列乙個,就往前移動陣列

// 用求餘解決到尾問題

#include void josephus(int n, int m, int start)

std::cout << arr[0] << "\n";

}int main(int argc, const char * argv)

return 0;

}

執行結果:

三、實現方法2:

不移動陣列:將陣列該位置已出列的設為零

//  不移動陣列:將陣列該位置已出列的設為零

//  總結:(1)移動陣列:將位置號前移,會耗費很多時間

//       (2)不移動陣列:當剩下的人數較少時,找不為0的會耗費很多時間

#include void josephus(int n, int m, int start)

}count++;

}for(i = 0; i < n; i++)

}}int main(int argc, const char * argv)

return 0;

}

(C )約瑟夫問題(Josephus)

easy版本 已知 n 個人 以編號1,2,3 4,5 6 n 圍坐一張圓桌周圍。從編號為s 的人開始報數,數到m 的那個人出列 他的下乙個人又從 1開始報數,數到m的那個人又出列 依次規律重複下去,直到圓桌周圍的人全部出列。include using namespace std struct no...

Josephus 約瑟夫 問題

問題描述 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到剩下最後乙個人。程式的意圖是求出最後留下的人的編號。c 實現 include include include u...

約瑟夫(Josephus)問題

一群小孩圍成一圈,任意假定乙個數n,從第乙個小孩起,順時針方向數,每數到第m個小孩時,該小孩便離開。小孩不斷離開,圈子不斷縮小。最後剩下的乙個小孩便是勝者。求勝者的編號?函式名稱 josephus 作 成 者 erick.wang 作成日期 2016 07 19 返 回 值 void 參 數 m,n...