算法创作|“猴子选王游戏”问题解决方法

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。


前言

标题,假如朋友圈分享了这篇文章,如何吸引朋友点击打开这篇文章。


问题描述

一群猴子围成一圈,按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源创计划”,欢迎正在阅读的你也加入,一起分享。

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