def joseph(total,interval):
""" 计算Joseph问题。total - 总数,interval - 间隔 """
li = range(total)
i = 0
temp = 0 #返回结果
tempstr = "" #用来存储临时字符串
li = range(total)
i = 0
temp = 0 #返回结果
tempstr = "" #用来存储临时字符串
interval -= 1 #对间隔进行处理
while len(li) > 0:
tempstr = ""
i = (i) % len(li)
temp = li[i]
li.remove(li[i])
#输出一些测试内容
tempstr = str(temp) + " " + str(i) + " " + str(len(li))
if len(li)>0 :tempstr += " " + str(li[0]) + " " + str(li[-1])
print tempstr
# tempstr = " ".join("%d" % (li[j]) for j in range(len(li)))
# print " " + tempstr
# i = i + 1
i = i + interval
print temp

if __name__ == "__main__":
joseph(8,4)
多么简洁!
速度相当的快哦,已经测试过1000,2左右,完全不输出临时字符串的话非常的快,具体时间本人还不会测……
本文提供了一个简洁高效的约瑟夫环问题解决方案,通过Python代码实现了指定人数和报数间隔条件下的淘汰顺序,并展示了实际运行效果。
2万+

被折叠的 条评论
为什么被折叠?



