用循环列表写约瑟夫环问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀的顺序是:5,4,6,2,3,1。
时间: 2023-05-13 07:06:16 浏览: 77
有N个人围成一环形圈,第一个人从1开始报数,报道M的人出列,直到最后一个同学,请写出算法。.txt
以下是用循环列表写约瑟夫环问题的代码:
```python
def josephus(n, m):
# 创建循环列表
circle = [i for i in range(1, n+1)]
# 当列表中还有多于一个元素时,继续循环
while len(circle) > 1:
# 找到第m个元素的索引
index = (m-1) % len(circle)
# 删除该元素
circle.pop(index)
# 将列表向左移动m-1个位置
circle = circle[index:] + circle[:index]
# 返回最后剩下的元素
return circle[0]
# 测试
print(josephus(6, 5)) # 输出1
```
关于中文加密的问题,我需要更多的信息才能回答。请问您是想了解中文加密的哪个方面?例如,是想了解中文加密算法的实现方式,还是想了解如何使用中文加密保护敏感信息?
阅读全文