ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

约瑟夫问题

2020-11-29 18:31:36  阅读:205  来源: 互联网

标签:list1 alive 约瑟夫 问题 players step num 输入


def move(list1,step):
    #移动step前的元素到列表的末尾
    num = step-1
    while num > 0:
        tmp = list1.pop(0)
        list1.append(tmp)
        num = num - 1
        
    return list1 #根据step做了元素的移动

def play(players,step,alive):

    #生成一个列表,从【1、、、players】
    list1 =[i for i in range(1,players+1)]
    
    #进入游戏的循环,每次数到step淘汰,step之前的元素要移动到末尾
    #游戏结束的条件是,列表剩余人数小雨alive
    while len(list1)>alive:
        list1=move(list1,step)
        
        list1.pop(0)

    return list1

players_num = int(input("请输入参加游戏的人数"))
step_num = int(input("请输入淘汰的数字"))
alive_num = int(input("请输入幸存的数字"))

alive_list = play(players_num,step_num,alive_num)
print(alive_list)
请输入参加游戏的人数50
请输入淘汰的数字7
请输入幸存的数字9
[46, 1, 8, 18, 19, 20, 24, 38, 40]



标签:list1,alive,约瑟夫,问题,players,step,num,输入
来源: https://blog.csdn.net/hbwss/article/details/110346764

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有