1

希望どおりに機能する関数がありますが、コースの作業のために、この関数を次のようなクラスに変換する必要があります。

  • という関数が必要solveItです。
  • 次の 2 つの値を返します。
    • このナップザックの問題を解決した場合に True になるブール値、および
    • 正しい値を持つナップサック オブジェクト。

クラス__str__()には、このような文字列を返す関数が必要です。最初の行はサイズで、2 行目は要素のカンマ区切りのリストです。

10
4,1,9,2,0,4,4,4,3,7

私はクラスをよく理解していないので、助けていただければ幸いです。これが私が今持っている機能です:

from itertools import combinations

def com_subset_sum(seq, target):
    if target == 0 or target in seq:
        print(target)
        return True

    for r in range(len(seq),1,-1):
        for subset in combinations(seq, r):
            if sum(subset) == target:
                print(subset)
                return True
    return False

print(com_subset_sum([4,1,9,2,0,4,4,4,3,7],10))
4

1 に答える 1