Norgesmesterskapet i programmering 2001

Oppgave B: «Christmas presents»

Hovedproblemet med denne oppgaver er tiden. I utgangspunktet er dette et problem med 2n mulige utplukk som må sjekkes, men med n=758 i test-data nytter det ikke å generere alle muligheter.

Løsningen er dynamisk programmering. Definer en vektor med P+1 elementer (der P er Julenissens penger). Hvert element er enten udefinert eller inneholder hvilke barn (blant de vi har sett på hittil) som har fått gave, og hvilken samlet glede dette har gitt. For hvert barn tar vi for oss alle prisene og lager en ny vektor med dobbelt så mange definerte elementer basert på om det aktuelle barnet har fått gave eller ikke. Om flere utvalg gir oss samme pris, beholder vi det beste.

Denne løsningen gir et program der kjøretiden er proporsjonal med n*P.

Test-data

Test-data gir flere ulike løsningen med samme gledesverdi. Alle disse ble godkjent.
Sist oppdatert 17.10.2001 av Dag Langmyhr.