使用while循环 def josephus1(num, k, m): """ 约瑟夫环(约瑟夫问题)是一个数学的应用问题: 已知num个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那个人出列; 他的下一个人又从1开始报数,数到m的那个人又出列; 依此规律重复下去,直到圆桌周围的人全部出列。
现在学习python,发现可以用列表的pop方法完美模拟把人移除的操作,因此重新用python写了一下: 问题的具体描述:有34个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 python代码: ring_list = [ i+1 for i in range(34)] bias = 0 print(...
大家好,又见面了,我是你们的朋友全栈君。 python解决约瑟夫环问题(容易理解版) 约瑟夫环问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人被杀掉;他的下一个人又从1开始报数,数到k的那个人又被杀掉;依此规律重复下去,直到圆桌周围的人只剩最后一个。 第...
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两...
直接上python代码: #注:编号是从1开始记的,和力扣上从0开始记的编号不同!def deadeline(num,d,cold): #不能优化的情况,直接用正常方法处理 if num<=d: W=list(range(1,num+1)) P=[] while len(W): for i in range(d-1): W.append(W.pop(0))#pop(0) 从列表中移除第一个元素并...
约瑟夫环(Josephus Problem)是一个经典的数学问题,涉及一个编号为 1 到 n 的人围成一圈,从第一个人开始报数,报到某个数字 m 的人出列,然后再从下一个人开始报数,如此循环,直到所有人都出列。本篇博客将详细解析约瑟夫环问题,并使用 Python 实现算法。
约瑟夫环问题(python3.x) 数据结构老师给我们留了约瑟夫环问题,结合我刚刚学完python想巧妙利用python中的列表切片来实现一个环形列表。下面不多BB直接上代码。 1n=int(input("输入n:"))#首先输入两个数m,n2m=int(input("输入m:"))3ls=[]#定义一个空列表4forxinrange(1,n+1):#将 为输入 的 n 从1...
Josephu环:30个人(15个教徒和15个非教徒)坐船出海 船坏 需要把15个人扔到海里 其他人才能幸存 围成一圈从某人开始从1报数 报到9的人 扔到海里 下一个人继续从...
2.Python代码 用Python语言是因为它对列表操作(切片、拼接等)特别方便: importrandom# 初始卡片cards队列,4张牌,假设为 7,8,9,10cards=[7,8,9,10]# 一、把4张牌撕开成8张,放到原来4张牌后cards+=cards# print(cards)# 二、名字有几个字,名字有几个字就从队头拿几张牌放到队尾# 从队头取name_len...
python中使用queue实现约瑟夫环(约瑟夫问题)求解 约瑟夫问题:是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列; 依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时...