В основном я ищу решение, которое возвращает, если данная комбинация соответствует заданному набору.
Пример: у меня есть массив, в котором хранится информация о том, какое компьютерное помещение и какое рабочее место имеет какое оборудование. Мне нужно выяснить, может ли данное количество пользователей с особыми потребностями вписаться в компьютерную комнату или нет. Индекс - это номер рабочего места в моем примере.
$aComputerRoomEquipment = array();
$aComputerRoomEquipment[1] = array("PC");
$aComputerRoomEquipment[2] = array("PC");
$aComputerRoomEquipment[3] = array("PC", "Scanner");
$aComputerRoomEquipment[4] = array("PC", "Printer");
$aComputerRoomEquipment[5] = array("PC", "Scanner", "Printer");
$aComputerRoomEquipment[6] = array("PC");
$aComputerRoomEquipment[7] = array("PC", "Scanner", "Printer");
$aComputerRoomEquipment[8] = array("PC");
Мне нужно ответить на следующий вопрос: если у меня есть два пользователя, которым нужен сканер, и у меня есть три пользователя, которым нужен принтер, подходят ли они в мою компьютерную комнату или нет?
Простая сумма всех свойств не работает, так как, если бы я поместил в комнату трех человек, которым нужен принтер, у бедного парня, которому нужен сканер, не осталось бы рабочего места.
Я уже думал об повторении всех возможных комбинаций, но чем больше число рабочих мест, тем дольше это займет и, возможно, потребуется вечность для завершения.