решить на Вы отправились в поход и взяли с собой разные блюда
1) По понедельникам, четвергам и воскресеньям вы едите рыбу.
2) По вторникам и субботам вы едите пюре.
3) А в остальные дни вы едите котлетки.
Перед тем, как отправиться в поход, вы взяли с собой A порций рыбы, B порций пюре и C порций котлеток. Каждый день вы съедаете по 1 порции соответственной еды. Вы можете отправиться в поход в любой день недели. Надо определить наибольшую возможную длительность похода
Исходный код и результат работы программы представлены ниже.
Если что-то было не учтено / не понятно, напишите об этом.
#include <iostream>
int main()
{
int startA, startB, startC;
int current_A, current_B, current_C;
int cnt = 0, max = 0, day = 1, current_day = 1;
// Русский язык в консоли
setlocale(LC_ALL, "Russian");
std::cout << "Введите A (кол-во порций рыбы): ";
std::cin >> startA;
std::cout << "Введите B (кол-во порций пюре): ";
std::cin >> startB;
std::cout << "Введите C (кол-во порций котлеток): ";
std::cin >> startC;
// В следующем цикле проверяем, какой
// лучше выбрать первый день для похода
for (; day <= 7; day++)
{
// Теперь проверим: что если отправиться
// в поход в день 'day':
current_day = day;
// Восстанавливаем кол-во блюд для новой модели
current_A = startA;
current_B = startB;
current_C = startC;
// В новой модели длительность похода изначально равна нулю
cnt = 0;
// В следующем цикле моделируем поход
while (1)
{
if ((current_day == 1) || (current_day == 4) || (current_day == 7))
{
// Если закончилась рыба, а в текущий день
// мы едим только рыбу, завершаем моделирование
if (current_A == 0) break;
current_A--;
}
else if ((current_day == 2) || (current_day == 6))
{
if (current_B == 0) break;
current_B--;
}
else
{
if (current_C == 0) break;
current_C--;
}
// Если мы сыты, увеличиваем кол-во дней
cnt++;
current_day++;
// После воскресенья следует понедельник
if (current_day == 8) current_day = 1;
}
// Если кол-во дней в текущей модели превышает
// максимальное кол-во дней, запоминаем это кол-во
if (cnt > max) max = cnt;
}
std::cout << "Наибольшая возможная длительность похода: " << max;
return 0;
}