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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • touchstart,touchmove,touchend触摸事件的小小实践心得

    近段时间使用html5开发一个公司内部应用,而触摸事件必然是移动应用中所必须的,刚开始以为移动设备上或许也会支持鼠标事件,原来是不支持的,好在webkit内核的移动浏览器支持touch事件,并且打包成

    2021年12月27日
  • 如何设计三极管控制继电器电路[通俗易懂]

    如何设计三极管控制继电器电路[通俗易懂]在用三极管驱动继电器的时候,不管是NPN还是PNP,都要把继电器接在三极管的集电极,而不会接在发射极上。一般初学者都会容易碰到这个问题,下面和大家分析一下这个问题。

  • oncontextmenu属性_360兼容模式

    oncontextmenu属性_360兼容模式公司的网站内容都是一些专业性很强的内容,而且内容都是花钱买来的,所以不想让别人轻而易举的复制过去,就尝试使用js控制一下,但是找了很多js代码,都是不支持firefox,如下取消选取、防止复制ie支持firefox不支持oncontextmenu="window.event.returnValue=false"ie支持firefox出错window.event…

  • ubuntu20更换国内源_ubuntu更换国内源

    ubuntu20更换国内源_ubuntu更换国内源[Fedora-ftp.sjtu.edu.cn]name=Fedora12-i386baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/12/Fedora/i386/os/enabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora[Eve

  • 用状态空间法求猴子香蕉问题_猴子摘香蕉状态空间图

    用状态空间法求猴子香蕉问题_猴子摘香蕉状态空间图猴子和香蕉问题(monkeyandbananaproblem)在一个房间内有一只猴子(可把这只猴子看做一个机器人)、一个箱子和一束香蕉。香蕉挂在天花板下方,但猴子的高度不足以碰到它。那么这只猴子怎样才能摘到香蕉呢?图2.1.1表示出猴子、香蕉和箱子在房间内的相对位置。用一个四元表列(W,x,Y,z)来表示这个问题的状态,其中W-猴子的水平位置x-当猴子在箱子顶上时取x=1;否则取x=0Y-箱…

发表回复

您的电子邮箱地址不会被公开。

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