题目1:计算约瑟夫环问题tips:《幸运的基督徒》有15个基督徒和15个非基督徒在海上遇险为了能让一部分人活下来不得不将其中15个人扔到海里面去有个人想了个办法就是大家围成一个圈由某个人开始从1报数报到9的人就扔到海里面他后面的人接着从1开始报数报到9的人继续扔到海里面直到扔掉15个人。由于上帝的保佑15个基督徒都幸免于难问这些人最开始是怎么站的哪些位置是基督徒哪些位置是非基督徒。输出最后站位用1
题目1:计算约瑟夫环问题
初始化15个基督徒和15个非基督徒的位置列表
circle = [1] * 15 + [0] * 15
初始化报数的起始位置为0
start = 0
初始化报数为1
count = 1
循环直到扔掉15个人
while circle.count(1) > 15: # 循环遍历圈中的每个人 for i in range(len(circle)): # 如果该位置上的人还没有被扔掉 if circle[i] != -1: # 如果报数为9 if count == 9: # 将该位置上的人扔掉 circle[i] = -1 # 重置报数为1 count = 1 else: # 报数加1 count += 1 # 如果已经扔掉了15个人,则退出循环 if circle.count(1) <= 15: break # 更新起始位置为下一个未被扔掉的人的位置 start = circle.index(1, start) + 1
将最后的结果转换为字符串
L1 = ''.join(str(i) for i in circle) L
原文地址: https://www.cveoy.top/t/topic/iBce 著作权归作者所有。请勿转载和采集!