面試的過程中遇到了這個問題。就是經典的約瑟夫環。總共有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的連結串列不知道簡單了多少倍。除非你想練習一下 連結串列。