首页 > 代码库 > 囚犯枪决站位战略
囚犯枪决站位战略
Question:有N个囚犯编号分别为1~N,按顺序围成一个圈。从1号开始1、2、1、2…地轮流报数。数到2的囚犯将被枪决。最后只有一人能避过枪决活下来。求该囚犯的编号。
# coding:utf-8N = input()L0 = range(1,N+1) #定义编号列表def start_1(L0): ‘‘‘开始报数为“1”的一轮枪决‘‘‘ L=[] #存活囚犯编号列表 for i in range(len(L0)): if i%2 == 0: L.append(L0[i]) return L
def start_2(L0): ‘‘‘开始报数为“2”的一轮枪决‘‘‘ L=[] #存活囚犯编号列表 for i in range(len(L0)): if i%2 != 0: L.append(L0[i]) return LL = start_1(L0) #首轮开始报数为“1”,不加入循环l = len(L0) #定义数组长度以确定下一轮的开始报数‘‘‘进入循环枪决,直到剩下一人‘‘‘while len(L)>1: if l%2 == 0: L0 = L L = start_1(L0) l = len(L0) else: L0 = L L = start_2(L0) l = len(L0)+1 print L
囚犯枪决站位战略
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。