View Single Post
Sitat av salolina Vis innlegg
Vi har en oppgave som går ut på at man har en lommebok som har plass til 5 mynter og man har 3 forskjellig type mynter: $1, $2 og $5. Hva er den minste verdien man kan kombinere myntene slik at de ikke får plass i lommeboken (som har kun plass til 5 mynter)?
Vis hele sitatet...
Huh? Den minste verdien man kan kombinere myntene slik at de ikke får plass i lommeboken? Du mener... seks enere vil jo være den minste verdien som ikke får plass i lommeboken. Men det var vel ikke helt slik oppgaven var? Har du link til oppgaven, eller kan du sitere den ordrett?

Med forbehold om at jeg ikke forstår et metrisk kvekk av oppgaven din, så kan dette minne litt om en versjon av ryggsekkproblemet (Knapsack problem). Det kan du lese mer om -- og se løsninger med dynamisk programmering -- her:
https://en.wikipedia.org/wiki/Knapsack_problem

Har du forresten testet at den koden du viser til i det hele tatt virker? Uten at jeg kan påberope meg å være noen som helst Javaekspert, så ser det ved første øyekast ut som søplekode.

Kode

temp=j/5;
sum=sum+temp*5;
????
Hvorfor ikke bare skrive sum+=j da?
Intetsigende variabelnavn og meget mangelfull kommentering.

Jeg orker ikke sette meg inn i den koden og hva den gjør, men det ser ut som den i alle fall teller opp fra 1, til den har dekket tilstrekkelig mange alternativer, og dermed muligens produserer en eller annen løsning på veien. Den lagrer det så vidt jeg ser ikke i en tabell eller noe slikt underveis, men hvis den "bruteforcer" seg oppover og hele tiden sjekker mot beste løsning "hittil", så kan det vel muligens funke, I guess. Men å kalle det dynamisk programmering er nok en stretch.

Min soleklare anbefaling er å ta en titt på andre kilder og prøve å skrive en bedre kode selv!


Disclaimer:
Øynene mine holdt ikke ut den koden der i mer enn ca fire og et halvt sekund, så mulig beskrivelsen min av koden er helt på jordet.

Edit:
Denne linjen i koden gjør forresten at jeg skjønner enda mindre av oppgavebeskrivelsen din. Er du sikker på at koden i det hele tatt prøver å løse det problemet du har fått?

Kode

System.out.println(i+" is the smallest value not created but fit into wallet");
Ut fra denne setningen så virker det jo som om koden prøver å finne den minste verdien som får plass i lommeboken men som ikke blir produsert av algoritmen?
...?
Sist endret av Realist1; 30. november 2017 kl. 07:04.