算法創作|“猴子選王遊戲”問題解決方法

本文首發於微信公衆號:"算法與編程之美",歡迎關注,及時瞭解更多此係列文章。


前言

標題,假如朋友圈分享了這篇文章,如何吸引朋友點擊打開這篇文章。


問題描述

一羣猴子圍成一圈,按123m依次編號。

然後從第1只開始數,數到第n只,把它剔出去,再重新開始數,

如此不停的進行下去,最後剩下的那隻就是大王。


解決方案

題目分析:本題的核心思路是一個約瑟夫環算法,在一開始利用while循環將猴子一隻一隻取出來用i標號,再將i判斷是不是爲要剔除的數字,不剔除就加入一個新的列表等待下一次循環,並且將i繼續加1,一直循環到只有最後一隻猴子爲止.

def king(m, n):

    lt = list(range(1, m+1))

    i = 0

    while len(lt) > 1:

        monkey = lt.pop(0)

        i += 1

        if i == n:

            i = 0

        else:

            lt.append(monkey)

    return lt[0]

m = int(input('請輸入猴子的總數:'))

n = int(input('請輸入n的值:'))

print(king(m, n))



結語

本週我們完成了一道java算法的題,用自己的想法解決了一下,後續我們也會對更多的題提出自己的解法。

 



實習編輯:王曉姣

作者:包文晴 於博 雷迅

稿件來源:深度學習與文旅應用實驗室(DLETA)

本文分享自微信公衆號 - 算法與編程之美(algo_coding)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章