2017-10-18 175 views
0

我的下面的代碼使用使用關於(30000輸入元件)超過300000 KB並且存在每存儲器使用的限制(256 MB),所以有任何方法來優化它?如何優化此代碼以減少內存使用量?

import itertools 
def get_subsets(arr,m) : 
    return list(itertools.combinations(arr,m)) 
def _9(string) : 
    count =0 
    for i in range(len(string)-1 , -1 ,-1) : 
     if string[i] != '9' : 
      break 
     count += 1 
    return count 
if __name__ == "__main__" : 
    length = int(input()) 
    arr = [int(x) for x in input().strip().split()] 
    pairs = get_subsets(arr,2) 
    max_9 = [_9(str(x[0]+x[1])) for x in pairs] 
    max_9_0 = max(max_9) 
    print(max_9_0,max_9.count(max_9_0)) 

的問題是: 讓我們定義的價格的質量爲在其端部(最右邊的位是等於9的數量)的9的數量。例如,數字2999和123912391999都有質量3,而952有質量0

有n產品具有明顯的價格T1,T2,...,TN。

你打算買正好兩個產品(它們必須是不同的)。請找出所選產品總價格的最高質量。此外,找出選擇兩種不同產品的方法數量,並獲得總價格的最大可能質量。

+1

你可以通過不物化組合的迭代開始...... –

+1

你爲什麼建設這麼多的列表時,迭代器正常工作? – user2357112

+0

@ user2357112好的,我會用迭代器改變列表。 –

回答