Avatar billede iakob Nybegynder
21. marts 2011 - 10:46 Der er 2 kommentarer og
1 løsning

Smuk algoritme: Optimering af fordelings-algoritme

Jeg har lavet følgende algoritme:

int modulus = Employees.Count();
List<Supplier> suppliers = ...;

for (int i = 0; i < suppliers.Count();i++)
{
    for (int j = 1; j <= modulus; j++)
    {
          if (i % j == 0)
          {
                suppliers[i].Employee = Employees[j-1];
          }
    }
}

Ideen er at der er en liste leverandører, hvori hvert element skal have en ansvarlig medarbejder tilknyttet. Listen af aktuelle medarbejdere indtastes af brugeren, og så trykkes der på en knap, hvorefter medarbejderne fordeles ligeligt ud på leverandørerne. Det skal være således at hvis der er 3 medarbejdere, så får medarbejder nr 1 følgende leverandører: 1,3,6,9...

Denne algoritme ser ud til at virke og eftersom vi taler om en leverandør liste på 100-300 elementer og en medarbejderliste på under 5, så er dette ikke særlig vigtigt for mit program. Men som professionel så kunne jeg rigtig godt tænkte mig at se en smuk løsning på dette problem. Nogen bud?
Avatar billede aaberg Nybegynder
21. marts 2011 - 11:24 #1
Hvis jeg forstår det rigtigt, kan du i hvert fald skrælle den inderste for-løkke væk:

int modulus = Employees.Count();
List<Supplier> suppliers = ...;

for (int i = 0; i < suppliers.Count();i++)
{
    int employeeIdx = i % modulus;
    suppliers[i].Employee = Employees[employeeIdx];
}
Avatar billede iakob Nybegynder
05. april 2011 - 12:06 #2
Det er korrekt, tak for det.
Der ser ikke ud til at komme yderligere svar. Opret et svar, så får du de 15 points.
Avatar billede aaberg Nybegynder
05. april 2011 - 12:50 #3
svar  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester