Problem Statement
You are packing a stack of books into some boxes, packing as many books as you can into each box without exceeding a given weight limit. Once you have packed as many books into a box as you can, you close and seal that box, and then begin filling the next one. You take the books off the stack in order, packing each one before picking up the next.
The weights of the books will be given as a
Definition
- Class:
- BoxesOfBooks
- Method:
- boxes
- Parameters:
- int[], int
- Returns:
- int
- Method signature:
- int boxes(int[] weights, int maxWeight)
- (be sure your method is public)
Constraints
- weights will contain between 0 and 50 elements, inclusive.
- maxWeight will be between 1 and 1000, inclusive.
- Each element of weights will be between 1 and maxWeight, inclusive.
Examples
{ 5, 5, 5, 5, 5, 5 }
10
Returns: 3
You have 6 books that weigh 5 kilograms each. Each box can hold 10 kilograms (2 books). Therefore, you need 3 boxes.
{ 51, 51, 51, 51, 51 }
100
Returns: 5
Each box can hold 100 kg, but since the books weigh 51 kg each, you can only put one in each box.
{ 1, 1, 1, 7, 7, 7 }
8
Returns: 4
You would like to put one 1 kg book and one 7 kg book in each of 3 boxes. But, since you must pack the books in order, you end up putting the three 1 kg books in one box and each of the three 7 kg books in its own box, for a total of 4 boxes.
{ 12, 1, 11, 2, 10, 3, 4, 5, 6, 6, 1 }
12
Returns: 6
{ }
7
Returns: 0
{ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }
1000
Returns: 1
{ 96, 758, 465, 581, 802, 790, 599, 272, 544, 641, 600, 420, 129, 600, 810, 264, 340, 849, 405, 415, 420, 115, 836, 124, 681, 535, 620, 309, 182, 201, 841, 214, 608, 848 }
849
Returns: 25
{ 19, 22, 2, 90, 81, 19, 87, 59, 72, 51, 86, 25, 51, 12, 39, 15, 66, 23, 78, 43, 19, 71, 15, 35, 76, 41, 55, 28, 50, 10, 78, 3, 27, 46, 77, 54, 75, 37, 57, 48, 59, 29 }
92
Returns: 29
{ 5, 250, 304, 157, 292, 53, 352, 209, 97, 22, 122, 46, 165, 55, 94, 151, 60, 58, 185, 28, 215, 250, 359, 174, 70, 121, 173, 190, 317, 286, 222, 65, 275, 216, 105, 48, 162, 96, 356, 184, 285 }
365
Returns: 23
{ 465, 618, 513, 264, 181, 523, 603, 114, 291, 25, 660, 256, 325, 382, 646, 127, 694, 478, 2, 696, 523, 232, 183, 641, 284, 147, 376, 192, 570, 648, 116, 97, 9, 59, 76, 354, 478, 489 }
707
Returns: 26
{ 15, 4, 30, 16, 35, 17, 36, 37, 27, 1, 26, 29, 23, 45, 28, 46, 39, 10, 24, 43, 43, 47, 26, 17, 30, 5, 29, 2, 36, 3, 35, 5, 13, 28 }
48
Returns: 24
{ 370, 99, 200, 102, 68, 362, 246, 133, 274, 385, 52, 324, 186, 125, 88, 278, 241, 277, 387, 312, 17, 239, 316, 300, 320, 374, 251, 301, 266, 72, 109 }
389
Returns: 23
{ 684, 709, 313, 719, 100, 328, 127, 672, 477, 527, 788, 405, 132, 712, 86, 341, 600, 338, 835, 11, 490, 680, 152, 291, 87, 108, 44, 371, 788, 588, 299, 565, 738, 326, 712, 339, 101, 379, 815, 712 }
844
Returns: 29
{ 201, 128, 69, 133, 19, 254, 201, 75, 128, 78, 220, 38, 250, 109, 292, 28, 240, 27, 295, 67, 35, 299, 165, 275, 115, 89, 138, 33, 55, 63, 129, 85, 66, 212, 281, 168, 29, 106, 219, 100, 258, 266, 149, 79, 59, 13, 206, 90, 110, 252 }
299
Returns: 31
{ 999, 1, 1 }
999
Returns: 2
{ 171, 123, 535, 146, 597, 153, 151, 408, 9, 110, 90, 46, 579, 617, 401, 108, 51, 106, 644, 571, 482, 380, 437, 429, 149, 533, 457, 73, 623, 496, 438, 82, 170, 447, 146, 29 }
665
Returns: 23
{ 254, 265, 431, 436, 218, 347, 217, 574, 209, 420, 559, 416, 458, 338, 466, 387, 426, 335, 79, 337, 570, 508, 123, 187, 232, 487, 304, 348, 199, 176, 519, 188, 272, 165, 512, 132, 257, 303 }
597
Returns: 30
{ 367, 86, 186, 105, 302, 250, 303, 3, 141, 124, 133, 228, 179, 188, 123, 41, 245, 302, 245, 269, 253, 269, 335, 126, 346, 338, 383, 1, 205, 370, 198, 349, 24, 35, 304, 296, 252, 330, 62, 108, 172, 375, 263, 370, 359, 293, 9, 69, 43, 61 }
393
Returns: 35
{ 9, 194, 285, 486, 192, 924, 885, 311, 900, 586, 324, 614, 773, 124, 391, 689, 951, 606, 112, 191, 542, 408, 300, 38, 220, 308, 707, 563, 82, 799, 94, 148, 472, 232, 135, 675, 348, 209, 592, 611, 669, 526, 833, 892, 888, 364, 233, 607, 844, 235 }
962
Returns: 32
{ 4, 7, 2, 6, 2, 2, 6, 5, 8, 7, 3, 6, 3, 8, 7, 1, 8, 2, 7, 2, 2, 2, 8, 7, 4, 6, 8, 8, 7, 7, 7, 8, 7, 6, 1, 6, 5, 2, 5, 8, 5, 3, 3, 3, 5, 7, 4, 3, 1, 6 }
8
Returns: 39
{ 168, 278, 377, 304, 224, 391, 135, 134, 73, 387, 371, 377, 373, 22, 338, 119, 248, 117, 371, 50, 372, 285, 344, 38, 358, 320, 55, 46, 175, 324, 45, 317, 129, 238, 310, 3, 352, 192, 251, 290, 131, 222, 361, 383, 110, 238, 27, 308, 196, 270 }
395
Returns: 37
{ 52, 657, 624, 524, 18, 430, 170, 683, 244, 703, 396, 139, 701, 329, 377, 49, 327, 599, 319, 26, 69, 267, 108, 388, 86, 505, 144, 638, 279, 701, 494, 561, 430, 68, 446, 278, 90, 671, 523, 259, 211, 86, 23, 265, 210, 723, 440, 479, 556, 247 }
736
Returns: 32
{ 178, 92, 135, 58, 185, 9, 144, 73, 37, 113, 65, 160, 121, 185, 74, 145, 103, 97, 82, 47, 121, 106, 99, 20, 76, 164, 116, 102, 121, 89, 143, 72, 178, 79, 134, 103, 19, 156, 92, 161, 171, 37, 36, 105, 57, 94, 186, 156, 147, 40 }
191
Returns: 39
{ 695, 168, 506, 26, 772, 15, 632, 292, 360, 287, 447, 221, 69, 813, 252, 731, 219, 798, 628, 45, 266, 13, 355, 126, 484, 249, 450, 534, 660, 668, 109, 373, 131, 796, 355, 258, 345, 622, 543, 690, 800, 475, 794, 8, 525, 685, 737, 766, 93, 100 }
828
Returns: 34
{ 83, 67, 86, 166, 67, 105, 111, 161, 99, 55, 24, 86, 16, 64, 164, 111, 14, 82, 44, 164, 81, 112, 120, 100, 135, 30, 102, 68, 125, 160, 117, 70, 71, 77, 43, 116, 111, 31, 125, 77, 157, 22, 14, 69, 109, 36, 72, 136, 64, 132 }
170
Returns: 36
{ 28, 146, 116, 258, 274, 229, 16, 6, 115, 59, 112, 314, 108, 89, 190, 323, 88, 75, 137, 91, 155, 11, 144, 178, 33, 255, 42, 231, 249, 81, 309, 299, 261, 236, 143, 145, 179, 189, 130, 186, 136, 124, 192, 173, 105, 249, 136, 239, 100, 127 }
329
Returns: 30
{ 145, 383, 156, 20, 235, 17, 177, 301, 832, 424, 306, 12, 607, 828, 602, 532, 566, 81, 816, 708, 351, 693, 808, 232, 403, 211, 796, 258, 288, 121, 478, 157, 200, 781, 721, 350, 236, 856, 767, 830, 604, 871, 698, 458, 295, 350, 567, 163, 65, 426 }
898
Returns: 31
{ 931, 737, 937, 341, 170, 453, 729, 759, 29, 865, 341, 92, 807, 458, 462, 408, 449, 239, 234, 808, 618, 424, 181, 884, 915, 849, 234, 66, 739, 989, 992, 864, 797, 738, 626, 324, 558, 792, 799, 406, 352, 428, 706, 159, 677, 234, 924, 455 }
1000
Returns: 35
{ 315, 392, 819, 501, 124, 669, 494, 971, 81, 61, 342, 132, 373, 225, 858, 816, 359, 814, 896, 817, 232, 250, 822, 697, 149, 156, 408, 456, 448, 916, 722, 708, 85, 173, 538, 291, 705, 712, 771, 647, 191, 157 }
1000
Returns: 27
{ 961, 582, 713, 445, 582, 264, 384, 562, 227, 38, 942, 367, 382, 616, 515, 584, 177, 331, 392, 726, 384, 894, 98, 128, 359, 32, 465, 207, 386, 50, 279, 668, 344, 664, 359, 661, 938, 139, 846 }
1000
Returns: 25
{ 346, 237, 595, 605, 536, 481, 150, 773, 279, 234, 942, 407, 948, 384, 911, 992, 87, 906, 54, 735, 997, 720, 739, 941, 593, 339, 639, 596, 95, 977, 9, 512, 631 }
1000
Returns: 25
{ 1, 3, 2, 1, 2, 2, 1, 3, 3, 3, 2, 1, 3, 2, 3, 1, 2, 3, 3, 2, 2, 2, 2, 1, 3, 1, 2, 3, 2, 2, 3, 2, 1, 1, 3, 1, 3, 3, 1, 2, 1, 1, 1, 1, 3, 1, 2, 3, 3, 2 }
3
Returns: 39
{ 3, 1, 1, 5, 2, 4, 5, 5, 1, 4, 3, 4, 5, 1, 1, 4, 1, 5, 4, 1, 4, 5, 1, 5, 2, 5, 4, 2, 2, 5, 5, 3, 4, 1, 2, 5, 1, 4, 2, 4, 1, 2, 3, 5, 4, 5, 4, 3, 2, 5 }
5
Returns: 38
{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }
3
Returns: 10
{ 10, 7, 8, 6, 2, 5, 1, 8, 3, 5, 6, 9, 2, 3, 7, 5, 9, 2, 4, 3, 2, 3, 7, 2, 4, 3, 4, 9, 2, 7, 9, 10, 8, 10, 1, 8, 8, 5, 3, 7, 4, 3, 4, 3, 5, 6, 3, 2, 10, 5 }
262
Returns: 1
{ 10, 7, 8, 6, 2, 5, 1, 8, 3, 5, 6, 9, 2, 3, 7, 5, 9, 2, 4, 3, 2, 3, 7, 2, 4, 3, 4, 9, 2, 7, 9, 10, 8, 10, 1, 8, 8, 5, 3, 7, 4, 3, 4, 3, 5, 6, 3, 2, 10, 5 }
261
Returns: 2
{1, 1, 1, 7, 7, 7 }
8
Returns: 4
{1 }
1
Returns: 1
{1, 15, 1, 15, 1, 15, 1, 15, 1, 15 }
15
Returns: 10
{ }
1
Returns: 0
{5, 5, 5, 5, 5, 5 }
10
Returns: 3
{1, 13, 12, 2 }
13
Returns: 4
{1, 7, 1, 7, 1, 7 }
8
Returns: 3
{7, 7, 7, 1, 1, 1 }
8
Returns: 4
{ }
10
Returns: 0
{3, 3, 1, 4 }
4
Returns: 3
{6, 7, 1 }
7
Returns: 3
{5 }
10
Returns: 1
{ }
20
Returns: 0
{1, 7, 1, 7 }
8
Returns: 2
{6, 2, 6, 2 }
6
Returns: 4
{30, 50, 20 }
50
Returns: 3
{1, 4, 2, 3 }
4
Returns: 4
{1, 9, 1, 9, 1, 9 }
10
Returns: 3
{4, 4, 3, 3 }
7
Returns: 3
{5, 5, 1, 1 }
6
Returns: 3
{8, 9, 2 }
10
Returns: 3
{ }
2
Returns: 0
{3, 5, 7 }
8
Returns: 2
{2, 5, 3, 4 }
7
Returns: 2
{2, 1, 2, 1 }
2
Returns: 4
{1, 7, 1, 7, 1, 7 }
7
Returns: 6
{1, 2, 1 }
2
Returns: 3
{3, 5, 1, 4, 6, 2 }
6
Returns: 5
{4, 5, 5, 3 }
9
Returns: 2