标题,假如朋友圈分享了这篇文章,如何吸引朋友点击打开这篇文章。
问题描述
一群猴子围成一圈,按1,2,3,…,m依次编号。
然后从第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)