Подбор комбинации с учетом цены и повторов

Нужно разработать режим питания, исходя из данных введенных пользователем. У нас есть база данных с блюдами и их ценами (так же у блюд есть пометка является ли оно завтраком, т.к. на завтрак чаще всего едят что то отличное от обеда и ужина). На вход от пользователя поступает количество денег (Валюта не важна) и количество дней. На выходе мы должны получить режим питания на заданное количество дней. Условия:

  1. Нужно чтобы цена не отличалась от заданной более чем на 3%.
  2. Нужно чтобы блюда не повторялись чаще чем раз в 5 дней.

Для себя я нашел такой, не сказать что эффективный, способ решения: Мы ищем среднюю цену на день = количество денег/количество дней. Затем пока не достигнем заданного количества дней, мы перебираем для каждого завтрака, обед и ужин(3 цикла for 2 из которых вложены) и если цена не слишком отличается то мы заканчиваем перебор и добавляем этот день. Тоесть конструкция сейчас выглядит так:

while(daysCounter < days){
    for(){
        for(){
            for(){

            }
        }
    }
}

Выглядит страшненько, хотя данных не очень много (относительно, количество блюд примерно 150). Есть мысли что можно найти более эффективное решение. Есть мысли о динамическом программировании, но пока нет идей как реализовать.


Ответы (0 шт):