精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • How to solve 約瑟夫問題 by C++ ?

    How to solve 約瑟夫問題 by C++ ?
    約瑟夫問題:設編號為1,2,…,n的n(n>0)個人按順時針方向圍坐一圈,每人持有一正整數密碼.開始時任選一個正整數作為報數上限值m,從第一個人開始順時針方向自1起順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下一個人起重新從1報數.如此下去,直到所有人全部出列為止.令n最大值取30.要求設計一個程序模擬此過程,求出出列編號序列(采用循環(huán)單鏈表結構).
    其他人氣:419 ℃時間:2020-06-08 16:16:14
    優(yōu)質解答
    約瑟夫(josephus)環(huán)是這樣的:假設有n個小孩坐成一個環(huán),假如從第一個小孩開始數,如果數到m個小孩,則該小該離開,問最后留下的小孩是第幾個小孩?例如:總共有6個小孩,圍成一圈,從第一個小孩開始,每次數2個小孩,則游戲情況如下:
    小孩序號:1,2,3,4,5,6
    離開小孩序號:2,4,6,3,1
    最后獲勝小孩序號:5
    這樣的問題,我可以先考慮輸入的內容有哪些?輸出內容有哪些?
    要求用戶輸入的內容有:
    1、是小孩的個數,也就是n的值;
    2、是離開小孩的間隔是多少?也就是m的值.
    3、所有小孩的序號要求存在數組或者鏈表中,所以需要定義一個指針,這里我們用數組來存放小孩的序號.
    而要求輸出的內容是:
    1、離開小孩的序號;
    2、最后留下小孩的序號;
    所以,根據上面分析輸入輸出參數,我們考慮離開小孩的序號可以直接輸出,這樣可以使函數的復雜性.那么函數定義如下:
    //輸入參數:
    //Childs為指向一個整形指針,指向保存小孩數組的首地址;
    //n為小孩的個數;
    //m為數小孩的個數;
    int Josephus(int *Child,int n,int m)
    {
    int i=-1,j=0,k=1;
    //開始數小孩,只到留下一個小孩
    while(1)
    {
    //數m個小孩
    for(j=0;j
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版