python实现约瑟夫环问题

python实现约瑟夫环问题#!/usr/bin/python#-*-coding:utf-8-*-definitList(n):list=[]foriinrange(n):list.append(i+1)returnlistdefrun_josephus(list,m):n=len(list)i=0j=0whilen>1:n=len(list)#.

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

#!/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)
'''

结果:

[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.net/136125.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月4日 上午7:36
下一篇 2022年6月4日 上午7:36


相关推荐

  • foremost入门

    foremost入门foremostvers 5 7byJesseKorn KrisKendall andNickMikus foremost v V h T Q q a w d t type s blocks k size b size c size size blocks type

    2026年3月18日
    3
  • excel如何去掉换行符号_去掉文本中所有换行符

    excel如何去掉换行符号_去掉文本中所有换行符excel中添加换行符::alt+enter去掉excel中的换行符有三种方法:注:解决过程中翻阅其他博客,看到如下方式:1、看到有的说全选后“取消自动换行”,保存后,再打开,依然存在换行符

    2022年8月4日
    66
  • Linux下C语言 system函数返回值「建议收藏」

    Linux下C语言 system函数返回值「建议收藏」例:status=system("./test.sh");1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。2、如何正确判断test.sh是否正确执行?仅判断status是否==…

    2025年12月15日
    5
  • Python——50道面试题,面试巩固必看,建议收藏!

    Python——50道面试题,面试巩固必看,建议收藏!

    2026年3月13日
    2
  • 配置ssh免密码登录

    配置ssh免密码登录SSH SecureShell 是建立在 TCP TP 协议的应用层和传输层基础上的安全协议 SSH 保障了远程登录和网络传输服务的安全性 起到了防止信息泄露等作用 通过 SSH 可以对文件进行加密处理 SSH 也可以运行于多平台 一 配置 SSH 无密码登录的步骤如下 以下步骤都是在主节点 master 上操作的 1 使用 ssh keygen 产生公钥与私钥对 输入命令 ssh keygen trsa 接着按三次 Enter 键 生成私有密钥 id rsa 和公有密钥 idrsa pub 两个文件 ss

    2026年3月18日
    2
  • 初识网络原理

    初识网络原理目录 1 网络互连 1 1 局域网 1 2 广域网 2 网络通信基础 2 1IP 地址 2 2 端口号 3 认识协议 3 1 五元组 3 2 协议分层 3 3OSI7 层模型 3 4TCP IP5 层 或 5 层 模型 3 5 网络设备所在分层 4 封装和分用 1 网络互连 什么是网络互连 将多台计算机连接在一起 完成数据共享 数据共享本质是网络数据传输 即计算机之间通过网络来传输数据 也称为网络通信 网络互连的分类 根据网络互连的规模的不同 我们将其分为局域网和广域网

    2026年3月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号