Quick actions

cmd+k|ctrl+k

Navigation

Languages

ulloa

Snippet info

Language

Python

Visibility

public

Author

scssaluis

Created

2019-03-04T23:01:27Z

Updated

2019-03-04T23:01:50Z

def minElementSum2(n, S):
    if n == 0:
        return 0
    if n < min(S):
        return None
    candidates = []
    for s in S:
        cand = minElementSum2( n-s, S )
        if cand is not None:
            candidates.append( cand + 1 )
    if len(candidates) == 0:
        return None
    return min(candidates)


# def minElementSum(n, S):
#     done = [None]*(n+1) # 0 through n inclusive
#     done[0] = 0 # first is 0
#     for i in range(n+1): # include n
#         candidates = []
#         for s in S:
#             if i-s >= 0 and done[i-s] != None:
#                 candidates.append(done[i-s] + 1)
                
#         if len(candidates) != 0:
#             done[i] = min(candidates)
#         # else, it stays as None

#     return done[n]


done = [None]*101  
done[0] = 0
def minElementSum3(n, S):
    if done[n] != None:
        return done[n]
    else:
        if n < min(S):
            return None
            
        candidates = []
        for s in S:
            cand = minElementSum3( n-s, S )
            if cand is not None:
                candidates.append( cand + 1 )
        if len(candidates) == 0:
            done[n] = None
        else:
            done[n] = min(candidates)
    return done[n]


print(minElementSum2(20, [1, 2, 3, 4]))
print(minElementSum3(20, [1, 2, 3, 4]))





INFO