Python实现约瑟夫环问题的方法

本文实例讲述了python实现约瑟夫环问题的方法。分享给大家供大家参考,具体如下:

题目:0,1,…,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。

定义函数f(n,m),表示每次在n个数字(0,1,…,n-1)中每次删除第m个数字后最后剩下的数字。

在n个数字中,假设第一个被删除的数字为k,那么删除k之后剩下的n-1个数字为0~k-1,k 1~n-1,并且下一次删除从数字k 1开始计数。第二个序列最后剩下的数字也就是我们要求的数字。于是我们对于剩下的n-1个数字重新编号,k 1编号为0,k 2编号为1,…,0编号为n-k-1,1编号为n-k,k-1编号为n-2,假设f(n-1, m) = x,即n-1个数中,每次删除第m个,最后剩下的数字编号为x,那么这个x就对应着原序列(n个数)中的编号(x + m) % n。可以得到递推关系:

f(n,m)=0, n=1
f(n,m)=[f(n-1,m) + m]%n n>1

Python代码:

立即学习“Python免费学习笔记(深入)”;

#coding=utf8'''题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。'''def josephus(n, m):  if type(n) != type(1) or n  0)')  if n == 1:    return 0  else:    return (josephus(n - 1, m) + m) % nif __name__ == '__main__':  print josephus(8, 3)  print josephus(1, 2)  print josephus(0, 2)

登录后复制

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2536495.html

(0)
上一篇 2025年3月5日 23:32:45
下一篇 2025年3月5日 23:32:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python判断文本中消息重复次数的方法

    本文实例讲述了python判断文本中消息重复次数的方法。分享给大家供大家参考,具体如下: #coding:gbk”’Created on 2012-2-3从文件中读取文本,并判断文本中形如“message0”、“message123”这样…

    编程技术 2025年3月5日
    200
  • Python过滤列表用法实例分析

    本文实例讲述了python过滤列表用法。分享给大家供大家参考,具体如下: 过滤列表 [mapping-expression for element in source-list if filter-expression] 以 if 开头的是…

    编程技术 2025年3月5日
    200
  • Python实现堆排序的方法详解

    本文实例讲述了python实现堆排序的方法。分享给大家供大家参考,具体如下: 堆排序作是基本排序方法的一种,类似于合并排序而不像插入排序,它的运行时间为O(nlogn),像插入排序而不像合并排序,它是一种原地排序算法,除了输入数组以外只占用…

    2025年3月5日
    200
  • python脚本监控docker容器

    本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下 脚本功能: 1、监控CPU使用率 2、监控内存使用状况 3、监控网络流量 立即学习“Python免费学习笔记(深入)”; 具体代码: #!/usr/b…

    编程技术 2025年3月5日
    200
  • Python松散正则表达式用法分析

    本文实例讲述了python松散正则表达式用法。分享给大家供大家参考,具体如下: Python 允许用户利用所谓的 松散正则表达式来完成这个任务。一个松散正则表达式和一个紧凑正则表达式主要区别表现在两个方面: 1. 忽略空白符。空格符,制表符…

    编程技术 2025年3月5日
    200
  • Python多进程同步简单实现代码

    本文讲述了python多进程同步简单实现代码。分享给大家供大家参考,具体如下: #encoding=utf8from multiprocessing import Process, Lockdef func(lock, a): lock.a…

    编程技术 2025年3月5日
    200
  • python中私有函数调用方法解密

    本文实例讲述了python中私有函数调用方法。分享给大家供大家参考,具体如下: 与大多数语言一样,Python 也有私有的概念: ① 私有函数不可以从它们的模块外面被调用② 私有类方法不能够从它们的类外面被调用③ 私有属性不能够从它们的类外…

    编程技术 2025年3月5日
    200
  • Python对象转JSON字符串的方法

    本文实例讲述了python对象转json字符串的方法。分享给大家供大家参考,具体如下: import jsonclass JSONObject(object): def __init__(self): self.name = ‘Ahan’ …

    编程技术 2025年3月5日
    200
  • 简单学习Python time模块

    本文针对python time模块进行分类学习,希望对大家的学习有所帮助。 一.壁挂钟时间 1.time() time模块的核心函数time(),它返回纪元开始的秒数,返回值为浮点数,具体精度依赖于平台。 >>>impor…

    编程技术 2025年3月5日
    200
  • Python简单实现TCP包发送十六进制数据的方法

    本文实例讲述了python简单实现tcp包发送十六进制数据的方法。分享给大家供大家参考,具体如下: 举例: 0x12, 0x34可以直接拼成 “4”。 客户端代码示例: #-*- encoding: utf-8 -*…

    编程技术 2025年3月5日
    200

发表回复

登录后才能评论