前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python实现约瑟夫环问题

python实现约瑟夫环问题

作者头像
全栈程序员站长
发布2022-09-05 14:44:24
3300
发布2022-09-05 14:44:24
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
#!/usr/bin/python
# -*- coding:utf-8 -*-

def initList(n):
    list = []
    for i in range(n):
        list.append(i+1)
    return list

def run_josephus(list, m):
    n = len(list)
    i = 0
    j = 0
    while n > 1:
        n = len(list)
        # print("i=",i,",j=",j)
        # print("list=",list)
        if i == m-1:
            print(list[j])
            list.remove(list[j])
            i = 0
            n = len(list)
            if j == n:
                j = 0
            continue
        else:
            i = i+1

        if j == n-1:
            j = 0
        else:
            j = j+1

    print(list[0])

m = 3

for n in range(11):
    list = initList(n+1)
    print(list)
    run_josephus(list, m)

'''
n = 3
list = initList(n)
print(list)
run_josephus(list, m)
'''

结果:

代码语言:javascript
复制
[1]
1
[1, 2]
1
2
[1, 2, 3]
3
1
2
[1, 2, 3, 4]
3
2
4
1
[1, 2, 3, 4, 5]
3
1
5
2
4
[1, 2, 3, 4, 5, 6]
3
6
4
2
5
1
[1, 2, 3, 4, 5, 6, 7]
3
6
2
7
5
1
4
[1, 2, 3, 4, 5, 6, 7, 8]
3
6
1
5
2
8
4
7
[1, 2, 3, 4, 5, 6, 7, 8, 9]
3
6
9
4
8
5
2
7
1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3
6
9
2
7
1
8
5
10
4
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
3
6
9
1
5
10
4
11
8
2
7

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136125.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档