Python 新手之 Joseph 问题

本文提供了一个简洁高效的约瑟夫环问题解决方案,通过Python代码实现了指定人数和报数间隔条件下的淘汰顺序,并展示了实际运行效果。

 

def joseph(total,interval):
    """ 计算Joseph问题。total - 总数,interval - 间隔
        """
    li 
= range(total)
    i 
= 0
    temp 
= 0  #返回结果
    tempstr 
= "" #用来存储临时字符串
    interval -= 1  #对间隔进行处理
    
while len(li) > 0:
        tempstr 
= ""
        i 
= (i) % len(li)
        temp 
= li[i]
        li.remove(li[i])
        #输出一些测试内容
        tempstr = str(temp) + " " + str(i) + " " + str(len(li))
        
if len(li)>0 :tempstr +=  " " + str(li[0]) + " " + str(li[-1]) 
        
print tempstr
#        tempstr = " ".join("%d" % (li[j]) for j in range(len(li)))
#
        print " " + tempstr
#
        i = i + 1
        i = i + interval
    
print temp


if __name__ == "__main__":
    joseph(
8,4)
    
    

多么简洁!

速度相当的快哦,已经测试过1000,2左右,完全不输出临时字符串的话非常的快,具体时间本人还不会测……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值