解决基督教徒问题python

解决基督教徒问题python
相对于这类约瑟夫环问题,最好的做法就是设置列表,并定义几个代表循环、索引以及状态的参数。比如此处的基督教徒问题,设置列表有30个元素,每个元素默认为True也就是活着;设置一个num代表循环,遍历到一个活着的就加一,直到num=9时,设置列表改索引位置为False,num置0;用%来设置人数为圈循环。

注意:
python及其敏感行间距

代码以及注释如下

# 重复True元素30次,组成一个列表
person = [True] * 30
death = 0  # 死亡人数
index = 0  # 索引
number = 0  # 循环参数
while death < 15:  # 死亡人数少于15人就循环
    if person[index]:  # 列表元素为True,也就是活着
        number += 1  # 循环参数自加1
        if number == 9:
            # 当循环参数为9的时候,设置死亡人数为1,也就是第九个人死亡,然后重置循环参数,并设置列表元素为False,表明此位置为‘死’位置
            death += 1
            number = 0
            person[index] = False
    index += 1  # 索引值自加1
    index %= 30  # 取余数,相当于每30个人为一圈,然后重新开始
print(person, end=' ')  # end=‘ ’,表示每个数后面有一个空格,若是写end='\n'那就是每个元素换行
print('\n')  # 换行
for i in range(0, 30):  # 循环,i(下标)的在0-29的范围中,range表示的范围为左闭区间右开区间
    if person[i]:  # 判断输出列表中活着的人站的位置
        print(i + 1, end=' ')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值