Sidder lige nu med et, for mig, komplekst problem:
- Et hotel har 100 ens værelser.
- Hvert værelse har en kapacitet (antal senge)
- Hvert værelse har minimum kapacitet
- Der bookes samlet antal
Hvordan regner man det bedste antal værelser ud? Givet at man helst vil fylde værelser, og helst vil afvise så få som muligt.
Jeg resonerer mig frem til følgende ligning:
AntalØnsket = x*max + y*min + rest
Løsning for mindste rest og største x foretrækkes.
Jeg har lavet følgende algoritme:
private static int CalcRooms(int visitors, int max, int min)
{
int largestY = 0, largestX = 0, biggest = 0;
for (int y = 0; visitors >= y * min; y++)
{
for (int x = 0; visitors >= (y * min + x * max); x++)
{
if (y * min + x * max > biggest)
{
biggest = y * min + x * max;
largestY = y;
largestX = x;
}
}
}
return largestY + largestX;
}
Jeg tror det er en løsning på udfordringen, men er det den simpleste, eller har du en smartere løsning?
God weekend…