python中约瑟夫环程序_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代码:
#coding=utf8
'''
题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
'''
def josephus(n, m):
if type(n) != type(1) or n <= 0:
raise Exception('n must be an integer(n > 0)')
if n == 1:
return 0
else:
return (josephus(n - 1, m) + m) % n
if __name__ == '__main__':
print josephus(8, 3)
print josephus(1, 2)
print josephus(0, 2)
更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
本文标题: Python实现约瑟夫环问题的方法
本文地址: http://www.cppcns.com/jiaoben/python/149061.html
python中约瑟夫环程序_Python实现约瑟夫环问题的方法相关推荐
- python中str是什么_python的str()字符串类型的方法详解
字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...
- python中常见的漏洞_Python常见安全漏洞及修复方法集合!你所不会的这里都有!...
[51CTO技术沙龙]10月27日,让我们共同探索AI场景化应用实现之道 --> 概述 编写安全的代码很困难,当你学习一门编程语言.一个模块或框架时,你会学习其使用方法.在考虑安全性时,你需要考 ...
- python中怎么编写程序_python写完程序怎么运行
安装并配置完成之后,我们就可以编写第一个python程序.学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world.那么,我们这里也以hello world来抛砖引玉,打开python ...
- python中exception类的_Python自定义一个异常类的方法
如何实现自定义一个异常 python内置了许多异常类,为编写代码划定红线,才使调试代码时能及时发现错误.那么我们编写一个模块也可以为使用此模块者划定红线,来约束使用者可用哪些数据,这就需要自定义异常类 ...
- python中readlines怎么用_python read() readline() readlines() write() writelines()方法总结
open()成功执行后返回一个文件对象,以后所有对该文件的操作都可以通过这个"句柄"来进行,现在主要讨论下常用的输入以及输出操作. 输出: read()方法用于直接读取字节到字符串 ...
- python 获取参数模块_Python中获取启动程序时后面跟的参数的方法(optparse模块)【冰斌棒】...
Python中获取启动程序时后面跟的参数的方法(optparse模块)[冰斌棒] 3年前 (2018-01-29) 作者:冰斌棒 分类:冰斌棒18程序计划 阅读次数:871 评论(0 ...
- python中用函数编写程序_python编写程序,在程序中定义一个函数,计算1+1/2+1/3+1/4+……+1/n...
python语言编写的程序需要运行库.Python(英语发音:/?pa?θ?n/),是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于 ...
- python中文件描述符_Python中的描述符
python中文件描述符 In Python, a class that implements a get, set or delete methods for an object is called ...
- python中isalpha的用法_Python string isalpha()用法及代码示例
在Python中,isalpha()是用于字符串处理的内置方法.如果字符串中的所有字符都是字母,则isalpha()方法返回"True",否则,返回"False" ...
最新文章
- java中properties作用,java中Properties类的使用
- 大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?
- poj 2240 Arbitrage (floyd 变形)
- angular 多个片段拼接_10个JavaScript代码片段,帮助你成为更好的开发者
- SQL Server DATEDIFF() 函数计算时间差
- 扩大博士研究生招生规模!
- mysql更改执行计划_11g中 connect by 语句执行计划改变
- 服务器安装数据库显示启动服务,安装数据库没有启动服务器服务
- 【Altera SoC体验之旅】+ 正式开启OpenCL模式
- 故宫商业大跃进 逐渐失控的IP洪流
- Hilbert变换器
- 解决Cannot find module ‘./index.module.scss‘ or its corresponding type declarations.ts(2307)
- Sue 的小球 ball
- 学校计算机机房解说词,学校会议室解说词.doc
- 信息系统项目管理师学习笔记1——信息化与信息系统1
- ActiveMQ 完整教程
- 用华为手机,别忘记打开这个“开发者选项”,能瞬间提升手机性能
- mysql 增加字段
- android r AB ota fail
- open与fopen
热门文章
- ttc转换ttf字体在线_R 语言画图中英文字体解决方案
- pythonbyte连接_Python3之字节串bytes与字节数组bytearray的使用详解
- MonoRec:无需激光雷达,只需单个相机就可以实现三维场景的稠密重建
- 使用c++filt查看trafficserver堆栈调用信息
- 为方便ATS管理建立的一些命令别名
- 三维植物树木模型 Maxtree – Plant Models Vol 74
- 用Sketchup和Vray学习室内设计
- jmeter分析性能报告时的误区
- 上不了名校?可以在 GitHub 上读他们的课程
- Android开发教程 - 使用Data Binding(二)集成与配置