Jest to rodzaj pytania do edycji i jest bardzo łatwe. Jestem po prostu dość martwy w tym temacie i jak dotąd nie mogę tego rozgryźć.
Biorąc pod uwagę szereg liczb, np
[3, 1, 1, 1]
Jak najskuteczniej przekształcić wszystkie liczby w tę samą liczbę przy minimalnej liczbie „ruchów”? Przez „przeniesienie” rozumie się dodanie lub usunięcie jednego z numeru.
W powyższym przykładzie najbardziej wydajnymi ruchami byłyby:
[1, 1, 1, 1]
Wymagałoby to 2 ruchów, dwukrotnie zmniejszając pierwszą liczbę.
Nie mogę znaleźć najlepszego sposobu, aby się tego dowiedzieć, biorąc pod uwagę znacznie większe tablice setek liczb.
Początkowo próbowałem obliczyć zaokrągloną średnią liczbę (sumę wszystkich podzieloną przez długość), a następnie zredukować ją do obliczonej średniej, ale powyższy przykład złamał to, wymagając 4 ruchów zamiast 2.
Myślę, że mógłbym wymyślić:
- Średnia,
- Tryb,
- Mediana
i uzyskaj odległość edycji każdego z nich, wybierając minimalną odległość. Nie jestem jednak pewien, czy byłoby to poprawne w każdym przypadku. Skąd mam wiedzieć?