Gegeven een getal \(n\) en een verzameling \(M=\{d_1,\dots ,d_k\}\) van kleinere positieve getallen. Het doel is om te bepalen op hoeveel manieren je \(n\) als som van getallen uit \(M\) kan voorstellen — waarbij elk getal natuurlijk meerdere keren mag voorkomen.
Implementeer een \(O(n)\) tijdsbegrensd algoritme voor dit probleem.
Je kan deze oefening op twee manieren interpreteren:
Volg hier de tweede manier, waar de volgorde niet belangrijk is.
Implementeer hiervoor de interface Som
1 in een klasse genaamd SomDynamisch
. Geef het antwoord modulo \(1000000009\) om overflow te voorkomen.
Gebruik eventueel de testklasse SimpleTest
2 om je oplossing lokaal te testen.