我想知道是否有可能使用python中的列表解決Josepheus問題。「約瑟夫問題」在Python中使用列表
簡而言之,約瑟夫斯問題就是要找到一個循環排列中的位置,如果使用事先已知的跳躍參數處理執行,這將是安全的。
例如:給定一個圓形排列,如[1,2,3,4,5,6,7]
和跳過參數3,人們將按照3,6,2,7,5,1
的順序執行並且位置4
將是安全的。
我一直試圖解決這個使用列表一段時間了,但索引位置變得棘手,我要處理。
a=[x for x in range(1,11)]
skip=2
step=2
while (len(a)!=1):
value=a[step-1]
a.remove(value)
n=len(a)
step=step+skip
large=max(a)
if step>=n:
diff=abs(large-value)
step=diff%skip
print a
更新與代碼段的問題,但我不認爲我的邏輯是正確的。
這種算法是驚人的!你能分享一下,你是怎麼想到'idx =(idx + skip)%len(ls)'的?我知道它是有效的,但我不知道人們如何能夠找到這種方式。謝謝! –
@JayWong這是最好的方式來通過一個數組,並從頭到尾打包 –