美文网首页kata
每日kata~01-Josephus Survivor

每日kata~01-Josephus Survivor

作者: Lacia | 来源:发表于2020-04-29 14:41 被阅读0次

题目

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()方法将已经杀掉的人移出列表

相关文章

网友评论

    本文标题:每日kata~01-Josephus Survivor

    本文链接:https://www.haomeiwen.com/subject/gzbgwhtx.html