约瑟夫环Python代码
时间: 2024-05-13 15:11:27 浏览: 20
这里是一个约瑟夫环问题的Python代码,具体解释可以参考代码注释:
```python
def josephu(n, k, m):
# n个人围成一个圆圈,首先将每个人的编号存入列表中
l = [i for i in range(1, n + 1)]
# 定义count记录报数,初始值为0
count = 0
# 当列表中的人数大于m时,重复下列步骤
while len(l) > m:
# 每次取出第一个人,并将count加1
count += 1
t = l.pop(0)
# 如果报数不等于k,则将这个人放到列表末尾
if count != k:
l.append(t)
# 如果报数等于k,则将这个人从列表中删除
else:
count = 0
# 返回最后剩下的人的编号
return l
print(josephu(100, 4, 2))
```
相关问题
约瑟夫环 python代码
以下是使用Python解决约瑟夫环问题的代码[^1]:
```python
def josephus(n, k):
link = list(range(1, n+1))
ind = 0
for i in range(n- 1) % len(link)
print('Kill:', link[ind])
del link[ind]
print('survive:', link)
if __name__ == '__main__':
josephus(100, 3)
```
约瑟夫环python代码
参考引用中的解法一和解法二,可以得到约瑟夫环的Python代码实现。
解法一:
n, k = map(int, input().split())
ls1 = [i for i in range(1, n+1)]
num = 0
while len(ls1) > 1:
num += 1
count = ls1.pop(0)
if num == k:
num = 0
else:
ls1.append(count)
print(ls1)
解法二:
n, k = map(int, input().split())
pos = 0
for i in range(2, n+1):
pos = (pos + k) % i
print(pos+1)