题目
kata: https://www.codewars.com/kata/555624b601231dc7a400017a
约瑟夫问题,n个人围成一圈报数,数到k的时候就把这个人杀掉,剩下的人继续围成一圈
问:最后剩下的是第几个人?
josephus_survivor(7,3) => means 7 people in a circle;one every 3 is eliminated until one remains
解:
这道题明确提出了n和k都会大于等于1
def josephus_survivor(n,k):
#your code here
count = 0
l=[x for x in range(0,n)]
while(len(l)>1):
count = (count+k-1)%(len(l))
l.pop(count)
return (l[0]+1)
问题的关键在于找到杀掉一个人之后,下个人的索引。以及用pop()方法将已经杀掉的人移出列表
网友评论