“猴子選大王” 演算法 python實現

來源:互聯網
上載者:User
今天來實現一個約瑟夫環演算法,下面是一道新浪的面試題:

m只猴子圍坐成一個圈,按順時針方向從1到m編號。然後從1號猴子開始沿順時針方向從1開始報數,報到n的猴子出局,再從剛出局猴子的下一個位置重新開始報數,如此重複,直至剩下一個猴子,它就是大王。設計並編寫程式,實現如下功能:

(1)要求由使用者輸入開始時的猴子數m、報數的最後一個數n。

(2)給出當選猴王的初始編號。


這道題是典型的約瑟夫環問題,“猴子選大王”問題。

注意:本執行個體在python2.7下測試通過,未在python3下測試,有興趣的同學可以到群裡交流

直接上代碼:

#!/usr/bin/python# coding=utf-8# 約瑟夫環演算法 之 猴子選王 問題  def king(m,n):    dd = {}#產生一個字典    p = 1    while(p<=m):        dd[p] = p        p = p+1              j = 1    while(len(dd) >1):        for k,v in dd.items():            if(j == n):                del dd[k]                j = 1            else:                j = j+1    return dd  print king(6,2)

注意:這裡用到了字典,而不是list。主要是因為這樣可以利用字典的索引的優勢

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.