( AszaltSzilva | 2018. 02. 10., szo – 11:50 )

Eléggé alulspecifikált a feladat. Nem világos, hogy egyik megoldás mikor jobb egy másiknál.

Habár a képességek egészekkel vannak leírva, a képességek vektora tekinthető az n-dimenziós tér egyik pontjának.
A feladat szerint párokba kellene sorolni a pontokat. A hagyományos euklideszi távolságfogalom mellett itt szóba jöhet a Manhattan, vagy a Csebisev távolság is, amikor a dimenziók menti eltérések összegét illetve maximumát kell tekinteni.

Ha minél közelebbi párok elérése a cél:
Mohó módszerrel lehetne tekinteni azokat a párokat, ahol a legkisebb a távolság, s ezeket a párokat eltávolítani a rendszerből. Ez mehet mindaddig, amíg el nem érjük a "tűréshatárt". Ekkor már minden pont izoláltnak tekinthető, újabb pár nem alakítható ki. Ezért tekintjük ezen izolált pontok halmazát, és miután az eddig eltávolított pontpárokat visszaadjuk az izolált pontokhoz, az izolált pontok mindegyikéhez hozzárendeljük a legközelebbi pontot. Végül a megmaradt pontokra újra a legkisebb távolságok szerint rendezve kapcsolhatjuk össze.

Ha az a cél, hogy minél kevesebb munkatárs maradjon pár nélkül:
A legközelebbi szomszéd távolsága szerint csökkenő sorrendben érdemes sorba állítani a pontokat, és ebben a sorrendben kell a az egyes pontokhoz párt találni (természetesen a hozzá legközelebbit), majd haladni a többiekkel. Ha igazán szépen akarunk haladni, a már kötött párok elemeihez tartozó távolságokat el kell felejteni, és eszerint a maradék sort újrarendezni. Ez már jelentősen ronthat a hatékonyságon. Bár az egyes ponttól mér távolságokat kupac/heap segítségével nyilvántartva, egy-egy pont törlése viszonylag olcsón megúszható.