约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数(包括自己在内,如m为1,则变为挨个自杀),数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。摘自百度百科

蛮力法求解(模拟算法)

蛮力法理解起来很简单,即用编程语言将该问题进行描述,代码如下:

# -*- coding: UTF-8 -*-

__author__ = 'Wang'

def joseph(total, stop_num, start=0, step=1):

# 约瑟夫问题,模拟算法

# total:总人数

# stop_num:杀多少人后停止

# start:开始数的人

# step:步长

tag_list = [1 for num in range(1, total+1)]

kill_seq = list()

current, step_count, kill_count = start, 1, 0

while kill_count < stop_num:

if step_count < step:

if tag_list[current] != 0:

step_count += 1

elif tag_list[current] != 0:

tag_list[current], step_count, kill_count = 0, 1, kill_count+1

kill_seq.append(current)

current = (current + 1) % total

for index, item in enumerate(tag_list):

if item != 0:

print("留下了的是", index)

print("杀人顺序:", kill_seq)

if __name__ == "__main__":

joseph(1000, 999, 0, 20)

该算法的时间复杂度为Θ(mn),其中m为step步长,n为stop_num杀多少人后结束。 约瑟夫问题最简单是解法是利用数学来进行求解,如可利用模拟算法求出前15个值,找到一个模式,然后利用数学归纳法来证明其在一般情况下的合法性。

约瑟夫问题python列表_Python实现约瑟夫问题相关推荐

  1. 使用Python列表方法模拟约瑟夫环问题

    问题描述: 有n个人围成一圈,从1开始按顺序编号,从第一个人开始从1到k(假设k=3)报数,报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号. 之前曾经推送过一个使用P ...

  2. python列表_Python中列表(list)操作方法汇总

    本文实例汇总了Python中关于列表的常用操作方法,供大家参考借鉴.具体方法如下: 一.Python创建列表: sample_list = ['a',1,('a','b')] 二.Python 列表操 ...

  3. python列表_Python列表抽象

    子类别清单 如果您坚持,则可以将列表子类化: class ListContainer(list): def play(self, *args, **kwargs): for item in self: ...

  4. find python列表_Python基础知识(7)list列表各种操作

    如字符串mystr = 'hello wo shi zui shuai de ren jiu shi wo', 以下是常见的操作 一.find 检测 str 是否包含在 mystr中,如果是返回开始的 ...

  5. python列表_Python列表列表的所有组合

    您可以使用 itertools.chain.from_iterable将列表元组展平为列表.示例 – import itertools input = [['a','b'],['c','d'],['e ...

  6. python异常处理_Python基础语法案例(Fibonacci):选择结构、循环结构、异常处理结构、代码优化...

    推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社,第16次印刷,清华大学出版社2019年度畅销图书 图书购买链接(京东):配 ...

  7. python生成有条件的列表_python复杂列表生成式教程

    本文主要讲解python列表生成式的实际运用实例!希望对初学者有帮助! 1.复杂的列表生成式HTML表格: 注:字符串可以通过%进行格式,用指定的参数化代替%s.字符串的join()方法可以把一lis ...

  8. python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型

    (点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...

  9. python列表的实现原理_Python列表对象实现原理

    Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...

  10. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

最新文章

  1. JavaScript正则表达式test的用法
  2. QT:KeepAliveOption的应用
  3. 【luogu P3378 堆】 模板
  4. 我已经写了48年代码了,我感觉我还能写下去
  5. 《Python参考手册(第4版•修订版)》——1.4 文件输入和输出
  6. html转excel有问题,html转excel
  7. 动画-animation
  8. Oracle ------ SQLDeveloper中SQL语句格式化快捷键
  9. Nagios监控数据脚本记录一下。
  10. 第8章 多项式回归与模型泛化 学习笔记中
  11. atitit.XML类库选型及object 对象bean 跟json转换方案
  12. ACC - 简介与解码
  13. 计算机硬件的基本组成(计算机组成原理3)
  14. linux系统vsftpd,Linux下vsftpd的配置
  15. html万花筒图片轮播代码,jQuery实现可拖拽3D万花筒旋转特效
  16. C# eval()函数浅谈
  17. Word查找替换详细用法及通配符一览表
  18. 阅读论文《Deep Bilateral Learning for Real-Time Image Enhancement》
  19. 阿里云物联网平台搭建
  20. 考初级计算机证需要考什么,计算机初级证书要考哪些内容

热门文章

  1. Java中new一个对象的步骤:
  2. 彩色图像灰度化MFC
  3. Excel实现Base16-Base64编码转换(SAP SCM)
  4. linux代码折叠,Ubuntu中gedit中插件的安装之代码折叠插件
  5. 平衡二叉树的原理及实现
  6. c预言plc编程语言,【讨论】对于PLC的编程语言STL、LAD、SCL等,你用的哪种语言呢?...
  7. 普中科技51单片机开发板
  8. android 分辨率 720 1184 适配,墨迹天气 Android版最新!趋势界面可以横向滑动切换城市!...
  9. 模拟电路实验 05 - | 集成运算放大器
  10. 智能客服问题相似度算法设计——第三届魔镜杯大赛第12名解决方案