根據這thread,我試圖用python編寫算法。如何獲得我們拍攝外星人的時間?
這裏是我的代碼:
def shoot(aliens):
s=[0]*1000
s[0]=0
s[1]=1
num=len(aliens)
for j in xrange(2,num):
a=[0]*1000
for i in xrange(0,j):
a[i]=s[i]+min(int(aliens[j]),f[j-i]) ## possible tries
s[j]=max(a) ##f[i] is the i-th finonacci number
return s[len(aliens)-1]
它的工作通過展示最大的外國人遭到破壞。 但是,我想打印出他們拍攝外星人的時間。 我的想法是從最後一次擊殺,這是在len(外星人)-1,並找出最後一次拍攝是在「(len(外星人-1))」拍攝之前。然後繼續做同樣的事情,直到我們到達第一次拍攝。
爲了做到這一點,我存儲了所有可能的嘗試,並將最後一次拍攝與他們進行比較以找到最後一次拍攝,但運行時間會很長,並顯示錯誤的結果。 林不知道它是否正確,但我試圖實施它,但我失敗了。
有沒有人有這樣的想法? 謝謝! PS:請問我你是否得不到我寫的東西。另外,我不想從上面的線索複製問題,因爲它很長。如果它困擾你,我很抱歉。
你的代碼是不可理解的。 's','a'或'aliens'的元素是什麼意思? – user2357112
我認爲外星人是一個數組,定義每分鐘出現的外星人數量,a是當EMP在那一分鐘被解僱時被摧毀的外星人數量。 s是在每分鐘內摧毀的外星人的最大數量(這是鏈接線程中的狀態)。 –
......哦,哇。這是一個經典的C語言緩衝區溢出,在Python中。你很幸運,如果外星人的攻擊時間超過1000分鐘,Python會給出很好的IndexErrors而不是破壞你的內存。 – user2357112