我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

python约瑟夫函数 python解决约瑟夫环问题编程

python类约瑟夫环原创问题求解 求大神

COUNT = 60  # 总人数

创新互联建站是一家专注于网站设计、网站制作与策划设计,黄陂网站建设哪家好?创新互联建站做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:黄陂等地区。黄陂做网站价格咨询:028-86922220

INDEX_FIRST = 2   # 第一次站出来的是2号

origin = list(range(1, COUNT+1))

res = []

index_label = INDEX_FIRST - 1

index_temp = 0

while origin:

index_temp = (index_label + index_temp) % len(origin)

res.append(origin.pop(index_temp))

index_label += 1

print(res)

请点击输入图片描述

python3 实现约瑟夫环

#coding=GBK

class Node():

def __init__(self,value,next=None):

self.value = value

self.next = next

def createLink(n):

if n=0:

return False

elif n ==1:

return Node(1)

else:

root = Node(1)

tmp = root

for i in range(2,n+1):

tmp.next = Node(i)

tmp = tmp.next

tmp.next = root

return root

def showLink(root):

tmp = root

while True:

print(tmp.value)

tmp = tmp.next

if tmp ==None or tmp == root :

break

def josephus(n,k):

if k ==1 :

print("幸存者:",n)

return

root = createLink(n)

tmp = root

while True:

for i in range(k-2):

tmp = tmp.next

    print("killed:",tmp.next.value)

tmp.next = tmp.next.next

tmp = tmp.next

if tmp.next == tmp:

break

print("survive:",tmp.value)

if __name__ =='__main__':

josephus(10,13)

计算结果:

killed: 3

killed: 7

killed: 2

killed: 10

killed: 1

killed: 6

killed: 8

killed: 9

killed: 4

survive: 5

Python约瑟夫圆环的解法

现在有13个人围成一个环,从1开始报数,数到3的人离开,写出程序计算最后剩下的是谁。

使用while循环

使用for循环

使用递归

摒弃递归,每次步长不为k时候都把当前元素弹出并放到队列尾部,从而模拟循环链表结构。进一步优化,由于列表弹出第一个元素的复杂度较高,可以使用双端队列来进行优化:

【基础】Python3小程序_约瑟夫生者死者小游戏

30 个人在一条船上,超载,需要 15 人下船。

于是人们排成一队,排队的位置即为他们的编号。

报数,从 1 开始,数到 9 的人下船。

如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

方法一:无算法运算

方法二:算法队列,利用队列先进先出的原理

queue模块学习

基础使用函数

q=queue.Queue(n) #建立长度为n的先进先出队列FIFO

q=q=queue.LifoQueue(n) #建立长度为n的后进先出队列LIFO

q.put() #放入元素

q.get() #取出元素

模块其他函数

Python语言之如何实现约瑟夫环问题

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解决约瑟夫环问题编程
文章来源:http://shouzuofang.com/article/hjscig.html

其他资讯