问题:设有n个人围坐一圈,现在从第k个人开始报数,报到第m的人退出。然后继续报数,直至所有人退出。输出出列人顺序编号
def josephusa_A(n, k, m): # 数组方法 people = list(range(1, n+1)) i = k - 1 for num in range(n): count = 0 while count < m: if people[i] > 0: count += 1 if count == m: print(people[i], end="") people[i] = 0 i = (i+1) % n print("," if num < n - 1 else "\n", end="") def josephusa_L(n, k, m): # 连续表方法 people = list(range(1, n+1)) i = k - 1 for num in range(n, 0, -1): i = (i + m -1) % num print(people.pop(i), end="") print("," if num > 1 else "\n", end="") class Josephus(LC_List): # 循环链表算法 def turn(self, m): for i in range(m): self.rear = self.rear.next def __init__(self, n, k, m): LC_List.__init__(self) for i in range(n): self.append(i+1) self.turn(m - 1) print(self.pop(), end="") print("," if num > 1 else "\n", end="")