2017-10-18 6 views
0

私の下のコードでは、約30000 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に等しい右端の桁数)として、価格の品質を定義してみましょう。たとえば、番号2999および123912391999は両方とも品質3であり、番号952は品質0です。

異なる価格t1、t2、...、tnを持つn個の製品があります。

あなたはちょうど2つの製品を購入するつもりです(違いが必要です)。選択した2つの製品の合計価格の最高品質を見つけてください。また、2つの異なる製品を選択する方法の数を見つけて、合計価格の可能な限り最高の品質を取得します。

+1

イテレータの組み合わせをマテリアライズしないで開始できます。 –

+1

イテレータがうまく動作すると、なぜたくさんのリストが作成されますか? – user2357112

+0

@ user2357112 okイテレータでリストを変更します。 –

答えて

関連する問題