Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/07/2014, 13:07
Avatar de Karmac
Karmac
 
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: Combinatoria con PHP

mmm Empecé a hacer el ejercicio pero planteé mal tus variables me parece. Lo siento, no las entendía. Te dejo el código que me ha quedado a ver si te sirve de ayuda. Cualquier duda dime.

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Cantidad de personas, obtenido de un formulario por ejemplo.
  4. $guests = 10;
  5.  
  6. $rooms = array(
  7.     // Número de la habitación - Capacidad
  8.     'hab1'  =>  3,
  9.     'hab2'  =>  3,
  10.     'hab3'  =>  4,
  11.     'hab4'  =>  2
  12. );
  13.  
  14. // Ordenamos las habitaciones por tamaño.
  15. asort($rooms);
  16. $rooms = array_reverse($rooms);
  17.  
  18. // Bucle.
  19. // Comprobamos las habitaciones de mayor a menor capacidad.
  20. // Si el tamaño es menor al número de huéspedes se asignan a
  21. // esa habitación hasta llenarla y se procede con la siguiente en orden.
  22. $selectedRooms = array();
  23. foreach ( $rooms as $key => $value )
  24. {
  25.     if ( $guests >= $value )
  26.     {
  27.         $guests -= $value;
  28.         $selectedRooms[] = $key;
  29.     }
  30. }
  31.  
  32. // Comprobamos si queda algún huésped sin habitación.
  33. if ( $guests != 0 )
  34. {
  35.     echo 'Lo sentimos, pero no se pueden acoger a todos los huéspedes en nuestro hotel.';
  36. }
  37. else
  38. {
  39.     echo 'Las habitaciones que se les han asignado son las siguientes: ' . implode(', ', $selectedRooms);
  40. }
  41. ?>

Saludos.

EDITO: por lo que se ve @xerifandtomas se me ha adelantado respondiendo mientras preparada la movida ;P Creo que en su post se refiere a lo mismo que he hecho en mi código.