python类约瑟夫环原创问题求解 求大神

60个人从1开始编号每人拿一个号码牌排成圈,从 1开始报数,
第一次报数到2的人出列,然后从出列者的下一个人重新报数
第二次报数到3的人出列,然后从出列者的下一个人重新报数
第三次报数到4的人出列,然后从出列者的下一个人重新报数
….以此类推,直到所有人都出列,编程实现输出出列号码序列

COUNT = 60  # 总人数
INDEX_FIRST = 2   # 第一次站出来的是2号

origin = list(range(1, COUNT+1))
res = []
index_label = INDEX_FIRST - 1
index_temp = 0
while origin:
    index_temp = (index_label + index_temp) % len(origin)
    res.append(origin.pop(index_temp))
    index_label += 1

print(res)

请点击输入图片描述

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-05
PEOPLE_MAXLEN=60
people=[i for i in range(1,PEOPLE_MAXLEN+1)]

index=0
order=0
flag=2
result=[]
while people.count(-1)!=PEOPLE_MAXLEN:
    if people[index]!=-1:
        order+=1
        if order==flag:
            result.append(people[index])
            people[index]=-1
            flag+=1
            order=0

    index=(index+1)%PEOPLE_MAXLEN
print(result)

py3.7

本回答被提问者采纳
第2个回答  2019-07-03
python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。