Mijn eerste bericht op dit forum.
Probleem:
Gegeven is een verzameling S met n>0 geheeltallige elementen. Deze verzameling wordt gerepresenteerd door een array s met:
Code: Selecteer alles
int [] s; // s.length = n
Ik heb er op zitten puzzelen, maar kwam niet snel tot een goede oplossing. Als antwoord vond ik in een soort van uitwerkingsdocument het volgende:
Code: Selecteer alles
/* We schrijven een hulpfunctie ssSumHelp met de volgende specificatie:
int ssSumhelp(int[] rij, int som, int k){
PRE : 0 <= k < rij.length
RETURN: Aantal deelverzamelingen DV van rij[0..k) waarvoor geldt: som(DV) = sum
In onze 'hoofdfunctie' doen we nu de aanroep:
int aantal = ssSumHelp(rij, sum, rij.length)
Code: Selecteer alles
int ssSumhelp (int[] rij, int sum, int k){
if ( k == 0){
return (sum == 0);
}
else {
return (ssSumhelp(rij, k-1, sum - rij[k-1]) + ssSumhelp(rij, k-1, sum));
}
}
int ssSum (int[] rij, int sum) {
return ssSumHelp(rij, sum, rij.length);
}
1. Hoe moet ik de notatie van PRE en RETURN opvatten? (ik zie het wel vaker, en weet niet precies wat ik ermee kan):
Code: Selecteer alles
PRE : 0 <= k < rij.length
RETURN: Aantal deelverzamelingen DV van rij[0..k) waarvoor geldt: som(DV) = sum
Alvast bedankt!
groeten, Struiks