webForumDet fria alternativet

Smarta summeringar

2 svar · 280 visningar · startad av mikaeled

mikaeledMedlem sedan dec. 2000160 inlägg
#1

Hej,

Jag har en databas med några rader innehållandes olika tal (summor) t ex:

id , summa
------------
1 , 85
2 , 15
3 , 20
4 , 10
5 , 25
6 , 75

Nu försöker jag konstruera ett script som räknar ihop vissa dessa efter ett visst mönster. Mönstret är att det ska försöka bli 100 eller mer, men helst inte mycket mer än 100. Målet är att få så många över 100 som möjligt.

T ex
id 1 och 2 = 85 + 15 = 100 (bra)
då kan man inte använda dessa två en gång till.

Mvh
Mikael

GeinMedlem sedan sep. 20004 849 inlägg
#2

Algoritmen kan ju bli ganska komplex beroende på hur noggrann du vill ha den. T.ex: Måste du hitta kombinationer som resulterar i exakt 100? Är det bättre att få två summor med 100 och en summa med 190 eller är det fördelaktigare att få alla tre summor runt 130?

Att inte använda samma id flera gånger är ju inte speciellt svårt, bara att kasta in alla id/summa-par i en array och när ett par har används så tar du bort det ur arrayen.

En första idé: Ta första id ur arrayen, addera med summan för nästa id i arrayen. Om totalsumman är lägre än 100 så fortsätter du med nästa id och adderar den summan också. Kolla om totalsumman fortfarande är lägre än 100, isåfall fortsätt. Annars om summan är precis 100 så tar du bort alla använda id ur arrayen. Sen beroende på hur noggrann du ska vara så kan du ju använda ett tröskelvärde som bestämmer om totalsumman är "tillräckligt" nära 100 eller inte. T.ex om du vill ha ett tröskelvärde på 5 så (efter varje gång du räknat en ny totalsumma) kollar du om absolutbeloppet(totalsumman - 100) är <= 5. Isåfall är vi tillräckligt nära 100 för att det ska anses som okej.

Mycket beror ju alltså på hur noggrann du vill vara.

mikaeledMedlem sedan dec. 2000160 inlägg
#3

Jag vill att det alltid ska bli över 100

tack för hjälpen!

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb