0

ここでは、この計算を解決する上で少し困惑しています。私は、Pythonを使用してサブセットのサムプログラムを作成することができました。ここでは、コードは次のようになります。サブセット2つのセットとターゲットの合計

def subsetsum(array,num): 

    if num == 0 or num < 1: 
     return None 
    elif len(array) == 0: 
     return None 
    else: 
     if array[0] == num: 
      return [array[0]] 
     else: 
      with_v = subsetsum(array[1:],(num - array[0])) 
      if with_v: 
       return [array[0]] + with_v 
      else: 
       return subsetsum(array[1:],num) 

私の質問は、私がアレイの2つのセットを持っている場合、すなわち配列1 = [4,5,1,7,2,1]と配列2 = [7,1,4、です6,3,2]では、ターゲットが18である配列の配列1は8のターゲットを持ち、配列2は10のターゲットを持つ必要があります。

また、エラーのマージンが大きい配列がある場合はどうなりますか?どのように私はそれを減らすだろうか?

+0

達成しようとしていることを詳しく説明できますか? –

答えて

0

あなたの例に続き、arr1=[4,5,1,7,2,1]arr2=[7,1,4,6,3,2]target=18そのような場合、あなたはその後、arr1内の各要素とターゲットの間の差を保存し、次の反復arr2と要素がセット内にあるかどうかを確認するためにセットを使用することができますarr1に1つの数字があり、合計がarr2に1つの数値がターゲットに等しいことが分かりました。

def getSubsetSum(arr1, arr2, target): 
    diffs = set() 
    for a in arr1: 
     diffs.add(target - a) 
    for b in arr2: 
     if b in diffs: 
      return (target -b, b) 
    return None 
+0

答えをくれてありがとう、それを試してみましょう。再度、感謝します 。 – bobin56

関連する問題