Wariacje znudzonej ekspedientki

0

Witam, mam do rozwiązania takie zadanie:

W Polsce mamy dostępne monety o nominałach: 1gr, 2gr, 5 gr, 10gr, 20gr, 1zł 2zł i 5zł. Na ile różnych sposobów możemy otrzymać wartość n zł (n jest liczbą naturalną ) używając dowolnej ilości monet?

Na razie udało mi się zrobić zliczanie ilości sposobów pod warunkiem,że będziemy korzystać z jednego rodzaju monet. Nie wiem jak dalej to "ugryść". Jakby ktoś mi coś podpowiedział to byłbym wdzięczny ;)

import java.util.Scanner;

public class MoneyVariation {

	public static void main(String[] args) {
		int counter = 0;
		Scanner scanner = new Scanner(System.in);
		System.out.println("Podaj kwotę");
		double amount = scanner.nextDouble();
		double temp = amount * 100;
		double[] nominal = new double[] { 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0, 200.0, 500.0 };

		for (int j = 0; j < nominal.length; j++) {
			double sum = 0;
			for (int i = 0; i <= temp; i++) {
				sum += nominal[j];
				if (sum == temp) {
					counter++;
				}
			}
		}
		System.out.println("Counter : " + counter);
	}

}
0

Algorytm dynamiczny. Tablica o rozmiarze kwota_do_wydania. Obliczaj kolejne elementy tablicy na podstawie poprzednich wpisując w każdą komórkę na ile sposobów mozesz to wydać.
Np. wydanie 1gr możesz zrobić na 1 sposób. Wydanie x=2 możesz zrobić poprzez dodanie 1gr do tablica[x-1] lub poprzez dodanie 2 groszy do tablica[x-2] itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1