超级容易理解版:思路:刚开始把所有的人放到一个列表里面去,报的数字不是3就把这个人放到列表的最后一个位置上面去,如果是3就把这个数字从列表中去掉。直到列表剩下一个人为止,代码如下: 代码语言:javascript 复制 defjosephus(n,k):#n代表总人数,k代表报数的数字 List=list(range(1,n+1))index=0whileList:...
现在学习python,发现可以用列表的pop方法完美模拟把人移除的操作,因此重新用python写了一下: 问题的具体描述:有34个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 python代码: ring_list = [ i+1 for i in range(34)] bias = 0 print(...
1.程序实现 首先,我们需要编写一个程序来解决约瑟夫环问题。下面是使用Python语言实现的代码:pythondef josephus(n,m): people = list(range(1,n+1)) i = 0 while len(people)>1: i =(i+ m -1)% len(people) people.pop(i) return people[0]通过这段代码,我们可以输入n和m两...
然后,从第一个节点开始,依次报数,当报数到达 m 时,移除当前节点,继续下一个节点,直到只剩下一个节点为止。 下面是使用 Python 实现约瑟夫环问题的代码: class Node: def __init__(self, value): self.value = value self.next = None class CircularLinkedList: def __init__(self): self.head = None ...
约瑟夫环问题简介:已知 n 个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为 1 的人开始报数,数到 m 的那个人出圈;他的下一个人又从 1 开始报数,数到 m 的那个人又出圈;依此规律重复下去,直到剩余最后一个人。直接上python代码:#注:编号是从1开始记的
约瑟夫环问题(python3.x) 数据结构老师给我们留了约瑟夫环问题,结合我刚刚学完python想巧妙利用python中的列表切片来实现一个环形列表。下面不多BB直接上代码。 1n=int(input("输入n:"))#首先输入两个数m,n2m=int(input("输入m:"))3ls=[]#定义一个空列表4forxinrange(1,n+1):#将 为输入 的 n 从1...
2.Python代码 用Python语言是因为它对列表操作(切片、拼接等)特别方便: importrandom# 初始卡片cards队列,4张牌,假设为 7,8,9,10cards=[7,8,9,10]# 一、把4张牌撕开成8张,放到原来4张牌后cards+=cards# print(cards)# 二、名字有几个字,名字有几个字就从队头拿几张牌放到队尾# 从队头取name_len...
下面是使用 Python 实现约瑟夫环问题的代码: 代码语言:javascript 复制 classNode:def__init__(self,value):self.value=value self.next=NoneclassCircularLinkedList:def__init__(self):self.head=None defappend(self,value):new_node=Node(value)ifnot self.head:self.head=new_node ...
解题思路:刚开始把所有的人放到一个列表里面去,报的数字不是3就把这个人放到列表的最后一个位置上面去,如果是3就把这个数字从列表中去掉。直到列表剩下一个人为止 注意事项: 参考代码: n = int(input()) l = list(range(1,n+1)) #l=[1,2...n] ...
代码如下: m =eval(input("请输入总人数:")) n =eval(input("请输入删除间隔数:")) ls =list(range(m))#创建一个列表ls,序号从0到m-1 while True: x =len(ls) % n#求最后一个人出列后面还有几人x del ls[n -1:-1:n]#将列表中的从第一个人开始以n为间隔的人出列 ...