I've been reading tons of material about dynamic programming, back tracking, linear programming, etc but cant seem to find or understand what type of algorithm best suits my problem.
The problem: I have a list of events, each are given a priority based on some condition (irrelevant to the question). Each event has a start & end time, plus the number of participants. I have a list of meeting rooms and each meeting room has a capacity (number representing how many participants it can hold). Given this constraint, each event has an additional list, which represents the potential meeting rooms it can be assigned to (meeting room capacity - event participants > 0). The algorithm only runs for the events of the current day, so its constrained to the 24 hours of a day.
Additional constraints:
- It doesnt matter if an event cant be assigned
- An event cant be assigned if it means another event with greater priority is left with no available room in their potential room list
In conclusion, the idea is to assign the maximum number of events we can, given that no event with greater priority than any of the assigned ones has no room. The return value shouldnt be a number representing this number, but a list for each room that holds the events that were actually assigned to it