Problem:
Coin Changing Problem

Find the minimum number of coins to make change for n cents using coins of denominations d1, d2,.., dm. The coins can be used any number of times.

Input

n m
d1 d2 ... dm

Two integers n and m are given in the first line. The available denominations are given in the second line.

Output

Print the minimum number of coins in a line.

Constraints

1 ≤ n ≤ 50000

1 ≤ m ≤ 20

1 ≤ denomination ≤ 10000

The denominations are all different and contain 1.

Sample Input 1

55 4
1 5 10 50

Sample Output 1

2

Sample Input 2

15 6
1 2 7 8 12 50

Sample Output 2

2

Sample Input 3

65 6
1 2 7 8 12 50

Sample Output 3

3

Solution in Ruby (judge verdict: Accepted)

def min(a,b)
  if a<b
    return a
  else
    return b
  end
end

n,m=gets.chomp.split(/ /).map{|i| i.to_i}
c=Array.new(m)
c=gets.chomp.split(/ /).map{|i| i.to_i}
d=Array.new(m).map{Array.new(n+1,10000)}
for i in 0..m-1
  d[i][0]=0
end
for j in 0..n
  if j%c[0]==0
    d[0][j]=j/c[0]
  end
end
for i in 1..m-1
  for j in 1..n
    if j>=c[i]
      d[i][j]=min(d[i-1][j],d[i][j-c[i]]+1)
    else
      d[i][j]=d[i-1][j]
    end
  end
end
puts d[m-1][n]