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