約瑟夫環筆記

Come from:

https://blog.csdn.net/liujian20150808/article/details/50926614

Analysis:

  • 編號0~n-1,報數從0開始
  • 因爲是循環序列,k+n-1 可能大於當前總人數
  • 當在解決n階約瑟夫環問題時,序號爲k的人出列後,剩下的n-1人又重新組成n-1階約瑟夫環問題
  • k2 = m % n2,此處的k2 正好是要出列的後一個人
  • 網友評論: 樓主確認i不是等於2開始賦值的? old=(new+p)%n(old),如果按照公式的話,你的第一輪的i應該是第二輪的總人數,也就是2,不該是一吧?

Test:

12%4%4=0

FAQ:

  • 當數到m-1的那個人出列,它的下個人從0開始報數
    當m<n時, 因爲編號從0開始,so 當某個人數到m時,它對應的序號爲()m-1)%n(這個觀點和作者不同)

  • 引入中間變量k
    爲了進行一般化表示整個序列

  • n-2 --> (k1+n-2)%n(n爲當前序列的總人數)

  • m的範圍到底是啥

  • 最後一個出列的人編號爲ans,k=m%n —>出列人的編號

  • 時間複雜度 O(n^m): n的m次方

  • 最後在測試相應的代碼時,覺得是錯誤的在這裏插入圖片描述

    • 當我們得到一個人的時候(即一階約瑟夫環問題)的結果,那麼我們是否能通過一階約瑟夫環問題的結果,推導出二階約瑟夫環的結果呢?
      這正好就是遞歸進層和遞歸退層
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章