szukam algorytmu, który można wykorzystać do łączenia wartości w tablicy, aby uzyskać jak najbardziej zbliżone do „inna wartość”.Get najbliższą wartość dla kombinacji tablicy (JS)
Na przykład, liczba chcę, aby dowiedzieć się, jaka kombinacja, która daje zamyka doprowadzić do 2.5. A moja tablica to [0.5, 1.0, 1.5, 2.0, 3.0]
. Połączenie w tym przypadku miałoby postać 2.0+0.5
.
2.7 dałoby takie samo combo (2,5 jest najbliższe), podczas gdy 3.7 dałoby 3.0+0.5
, a 7.0 miałoby być 3.0+3.0+1.0
.
Czytałem różne algorytmy, aby utworzyć dostępne kombinacje i takie - na przykład: https://codereview.stackexchange.com/questions/7001/better-way-to-generate-all-combinations Jednak mam trudności z napisaniem funkcji, która pozwala na użycie tej samej wartości wiele razy (np. mój przykład z 7.0). To sprawia, że liczba kombinacji jest dość duża.
Każdy po dobrym przykładem schowany? Czy masz jakieś wskazówki do przekazania?
EDYTOWANIE @kar powiedział mi o "problemie z plecakiem". Mogę dodać, że dla mojego przykładu poszukiwana wartość znajduje się w określonym zakresie (1,0 i 10,0) - co nieco ogranicza kombinacje.
Spójrz na to [Knapsack problemu] (http://en.wikipedia.org/wiki/Knapsack_problem) Wydaje się mnie, że to jest to, co powinieneś przeczytać. – zkar
Chociaż zgadzam się, że może to być objęte "Problemem z plecakiem", wciąż jest różnica, że mam tylko jeden typ wartości, o który trzeba się martwić (powiedzmy, ciężar w przykładzie z Wikipedii), a nie dwa. – Marcus
Jeśli chcesz znaleźć najbliższy w tablicy niż możesz nacisnąć numer, a nie posortuj go, a następnie weź drugą i poprzednią liczbę z tego numeru i spróbuj użyć Math.okrągłe lub wypróbuj coś takiego;) – Givi