This is a Python solution for all general cases. Any suggestions at all would be appreciated; in my opinion it's already quite good! Here's a link to the problem.
from timeit import default_timer as timer
def count_coins(target, operands):
ways_to_make = [1] # list of ways to make x at index x
for o in range(0, len(operands)):
for t in range(target + 1):
# initialise undefined target
if len(ways_to_make) <= t:
ways_to_make.append(0)
# add ways to make number recursively
if t >= operands[o]:
ways_to_make[t] += ways_to_make[t - operands[o]]
return ways_to_make[target]
start = timer()
ans = count_coins(200, [1, 2, 5, 10, 20, 50, 100, 200])
elapsed_time = (timer() - start) * 1000 # s --> ms
print "Found %d in %r ms." % (ans, elapsed_time)