約瑟夫環 python 實現

面試的過程中遇到了這個問題。就是經典的約瑟夫環。總共有41個人,排成一排,數到3的人自殺,問最後剩下的是那兩個號碼?

這個題目最早是用指針實現的。在我面試python的過程中遇到了,我嫌麻煩,所以只寫了僞代碼。後來想來一下,這樣實在是表現太差勁啊。python是很方便的,爲什麼非要用指針去實現呢,這也表現出我對語言的實用不熟練吧。這也是我面試過程中表現最突出的問題。好吧,分析一下,其實很簡單,就是數數,只不過死去的人不參與計數。只需要建一個死人的list,然後在從活人的list中循環數,知道剩下2個人,就是輸出結果。下面是實現過程。

import os

cnt = 1
dead = []

def ans(t):
    global cnt,dead
    for i in t:
        if i in dead:
            continue
        if cnt==3:
            dead.append(i)
            print dead
            cnt = 1
        else:
            cnt+=1

if __name__=='__main__':
    s = 9
    p = range(1,s,1)
    while len(dead)<s - 3:
        ans(p)
    for i in p:
        if i not in dead:
            print i,

其實用python 還是很容易實現的,比寫c的鏈表不知道簡單了多少倍。除非你想練習一下 鏈表。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章