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 C# (judge verdict: Accepted)

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        new Program().Solve();
    }


    void Solve()
    {
        int[] nm = Console.ReadLine().Split().Select(s => int.Parse(s)).ToArray();
        int n = nm[0];
        var coins = Console.ReadLine().Split().Select(s => int.Parse(s)).ToArray();
        var dp = new int[n + 1];

        for (int x = 1; x <= n; x++)
        {
            dp[x] = 1000000;
        }

        for (int i = 0; i < coins.Length; i++)
        {
            for (int x = coins[i]; x <= n; x++)
            {
                dp[x] = Math.Min(dp[x], dp[x - coins[i]] + 1);
            }
        }

        Console.WriteLine(dp[n]);
    }
}