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

import java.util.*;
public class Main {
     static int getTheNumberOfCoin(int C[],int n,int m){
         int T[] = new int[n + 1];
         for(int i = 1;i < n + 1;i++){
             T[i] = T[i - 1] + C[0];
         }
         for(int i = 0;i < m;i++){
             for(int j = C[i];j < n + 1;j++){
                 if(T[j] < T[j - C[i]] + 1){
                     T[j] = T[j];
                 }else{
                     T[j] = T[j - C[i]] + 1;
                 }
             }
         }
         return T[n];
     }
     public static void main(String[] args) {
         Scanner in = new Scanner(System.in);
         int n = in.nextInt();
         int m = in.nextInt();
         int C[] = new int [m]; 
         for(int i = 0;i < m;i++){
             C[i] = in.nextInt();
         }
         int min = getTheNumberOfCoin(C,n,m);
         System.out.println(min);
     }
}