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 Scala (judge verdict: Runtime Error)

import java.util.Scanner

object Main extends App {

    val mem = new Array[Int](50000)
    val scanner = new Scanner(System.in)
    var n = scanner.nextInt()
    val arrayC: Array[Int] = {
        val m = scanner.nextInt()
        new Array[Int](m)
    }
    input(arrayC.length)
    System.out.println(calc(n))

    def input(i: Int): Unit = {
        if (i == 0) return

        arrayC(i - 1) = scanner.nextInt()
        input(i - 1)
    }

    def calc(x: Int): Int = {
        if (x < 0) {
            return Integer.MAX_VALUE
        }
        if (x == 0) {
            return 0
        }
        if (mem(x) != 0) {
            return mem(x)
        }

        var i = 0
        var min = Integer.MAX_VALUE
        while (i < arrayC.length) {
            val temp = calc(x - arrayC(i))
            if (temp < min) {
                min = temp
            }
            i += 1
        }

        mem(x) = min + 1
        return mem(x)
    }
}