首先是比较容易看得懂的。。
原题:
用户输入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;