关闭

约瑟夫环Python描述

972人阅读 评论(0) 收藏 举报
首先是比较容易看得懂的。。

原题:

 用户输入M,N值,N个人围成一个环,从0号人开始数,数到M,那个人就退出游戏,直到最后一个人
求最后一个剩下的人是几号?
(约瑟夫环问题 Josephus)

def solve(n,m):
    #自动身成列表,从0开始 到n-1
    list=range(n)
    m-=1
    k=m%n;
    while(len(list) >1):
        del list[k]
        k= (k+m) % len(list)
    return list[0]

#然后是非常优美的算法


def game(n,m):
    if n==1:
        winner=0
    else:
        pre_winner=game(n-1,m);
        winner=(pre_winner+m)%n
    return winner;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15213次
    • 积分:220
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条