Матч
389, Коробки с книгами (BoxesOfBooks)
Дивизион 2,
Уровень 1
Имеется кипа книг, которую
необходимо упаковать в коробки. Каждая коробка может содержать любое количество
книг, но вес книг в ней не должен превышать maxWeight.
Вы берете очередную коробку, кладете туда наибольшее допустимое по весу
количество книг, потом ставите на нее печать, и берете следующую коробку.
Каждая книга, которая кладется в
коробку, берется только с верха кипы. Необходимо найти наименьшее количество
коробок, в которое можно сложить все книги.
Класс: BoxesOfBooks
Метод: int
boxes(vector<int> weights, int maxWeight)
Ограничения: 1 £ b £ 10000,
0 £ a £ b, 1 £ terms £ 20.
Вход. Массив весов книг weights и допустимый максимальный вес книг maxWeight в каждой коробке.
Выход. Наименьшее количество коробок, в которое можно сложить все
книги.
Пример входа
weights |
maxWeight |
{5, 5, 5, 5, 5, 5} |
10 |
{51, 51, 51, 51, 51} |
100 |
{1, 1, 1, 7, 7, 7} |
8 |
{} |
7 |
Пример выхода
3
5
4
0
РЕШЕНИЕ
моделирование
Если массив пустой, возвращаем 0.
Моделируем процесс перекладывания книг из кипы в коробки по описанному в
условии алгоритму.
ПРОГРАММА
#include <cstdio>
#include <vector>
using namespace std;
class BoxesOfBooks
{
public:
int boxes(vector<int>
weights, int maxWeight)
{
int s, res, i;
if (weights.size() == 0) return 0;
for(s = res = i = 0; i <
weights.size(); i++)
{
if (s + weights[i] > maxWeight)
res++, s = 0;
s += weights[i];
}
return res + 1;
}
};