2017-10-18 95 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好的,我会用迭代器改变列表。 –

回答