Problem Statement
You will be given an
Definition
- Class:
- PlacingPieces
- Method:
- optimalPlacement
- Parameters:
- int, int[]
- Returns:
- int
- Method signature:
- int optimalPlacement(int L, int[] pieces)
- (be sure your method is public)
Constraints
- L will be between 1 and 1000, inclusive.
- pieces will contain between 1 and 30 elements, inclusive.
- Each element of pieces will be between 1 and 100, inclusive.
Examples
9
{1, 8}
Returns: 1
You can place both pieces on the board and leave no space on it. However, there is a better solution as depicted below. Place only the second piece on the board, and leave a little space between it and the left and right edges of the board, so that the first piece can't fit:
36
{1, 1, 5, 5, 5}
Returns: 4
If we place all three pieces with length 5 on the board, we will have no choice but to also place the smallest two pieces. However, if you place only two of them and the two smallest pieces, you can leave spaces on the board that are smaller than the length of the remaining piece.
37
{1, 1, 5, 5, 5}
Returns: 5
You cannot leave any piece out here.
18
{2, 2, 2, 9, 9, 10}
Returns: 2
Sometimes it is better to not place the piece with the highest length.
1
{2, 3, 4}
Returns: 0
No piece fits on this board.
52
{11, 15, 18, 1}
Returns: 2
109
{4, 16, 20, 37}
Returns: 3
290
{57, 25, 21, 18, 45}
Returns: 4
122
{39, 53}
Returns: 1
227
{63, 7, 52, 43, 67}
Returns: 3
35
{12, 17, 5}
Returns: 2
64
{43, 13}
Returns: 1
272
{76, 1, 3, 88, 71, 14}
Returns: 3
132
{15, 13, 1, 4, 16, 2, 10, 2, 13, 7}
Returns: 7
176
{9, 3, 36, 22, 33, 18, 24, 25}
Returns: 5
216
{52, 6, 26, 22, 16, 51, 39, 25}
Returns: 4
974
{24, 49, 26, 26, 22, 2, 77, 35, 58}
Returns: 9
219
{1, 60, 53, 2, 10, 76, 29, 14, 65}
Returns: 4
197
{5, 15, 4, 10, 18, 11, 10, 1, 13}
Returns: 8
19
{5, 32, 23, 16, 17, 7, 21, 38, 7}
Returns: 1
1000
{15, 47, 21, 1, 9, 75, 13, 78, 6, 10}
Returns: 10
57
{12, 1, 23, 51, 32, 74, 90, 66, 46, 1}
Returns: 2
140
{79, 13, 21, 66, 73, 3, 58, 18, 29, 86}
Returns: 2
34
{1, 16, 2, 18, 6, 5, 4, 3, 19, 3}
Returns: 2
44
{2, 10, 16, 13, 3, 4, 2, 15, 1, 19}
Returns: 3
151
{39, 26, 5, 48, 52, 55, 41, 37}
Returns: 3
939
{15, 47, 21, 1, 9, 75, 13, 78, 6, 10}
Returns: 9
461
{16, 89, 75, 79, 90, 25, 65, 13, 10, 11, 52, 78, 55, 4, 25}
Returns: 6
201
{5, 8, 4, 16, 4, 2, 7, 7, 1, 8, 1, 8}
Returns: 11
661
{37, 14, 8, 1, 12, 20, 38, 18, 19, 37, 37, 15, 31}
Returns: 12
527
{6, 44, 54, 22, 13, 55, 40, 41, 58, 50, 36, 23, 45, 53, 41}
Returns: 7
390
{31, 42, 75, 14, 7, 71, 11, 16, 74, 47, 47}
Returns: 6
386
{9, 38, 36, 22, 47, 84, 4, 8, 21, 31, 31, 56, 97, 75}
Returns: 6
306
{9, 9, 7, 13, 4, 10, 14, 1, 6, 6, 2, 13, 4, 2, 6}
Returns: 15
632
{28, 27, 11, 9, 14, 11, 14, 6, 33, 33, 7, 25}
Returns: 12
401
{52, 40, 46, 34, 9, 12, 5, 25, 39, 55, 24, 45}
Returns: 7
819
{54, 29, 11, 50, 72, 54, 31, 72, 54, 48, 64, 71, 8}
Returns: 9
703
{73, 76, 90, 42, 84, 13, 57, 88, 80, 45, 80, 1, 78, 41, 73, 40, 97, 42}
Returns: 7
308
{3, 12, 18, 18, 19, 7, 2, 6, 12, 8, 8, 6, 5, 3, 16, 14, 12, 6, 1, 14}
Returns: 15
635
{39, 37, 10, 37, 16, 24, 26, 39, 5, 1, 14, 20, 28, 13, 26, 1, 22, 6, 5, 18}
Returns: 15
577
{20, 44, 24, 4, 39, 5, 1, 20, 1, 31, 14, 49, 45, 43, 36, 11, 3, 8, 36, 11}
Returns: 13
869
{26, 57, 74, 10, 35, 23, 65, 55, 1, 33, 79, 71, 33, 77, 64, 14, 22}
Returns: 10
626
{4, 91, 94, 41, 14, 68, 41, 8, 8, 72, 21, 3, 79, 37, 75, 43, 89, 68, 57}
Returns: 8
508
{12, 7, 12, 12, 3, 4, 6, 6, 10, 16, 14, 15, 6, 16, 13, 7, 9, 13, 11}
Returns: 19
815
{2, 14, 14, 23, 3, 12, 33, 36, 24, 21, 25, 11, 8, 6, 29, 27, 21, 22, 23}
Returns: 17
800
{24, 58, 33, 21, 47, 15, 51, 8, 46, 23, 40, 34, 28, 6, 19, 57, 15}
Returns: 12
678
{13, 59, 74, 66, 6, 42, 37, 67, 15, 44, 17, 65, 64, 22, 20, 42, 57, 33}
Returns: 10
261
{44, 87, 93, 36, 1, 70, 82, 90, 62, 31, 99, 40, 19, 8, 73, 19, 77, 76, 5, 73}
Returns: 3
285
{25, 55, 12, 82, 70, 88, 1, 72, 51, 35, 81, 4, 32, 83, 87, 21, 80, 90, 49, 2}
Returns: 4
185
{99, 82, 20, 44, 35, 10, 72, 89, 72, 15, 87, 21, 65, 60, 52, 94, 16, 46, 1, 58}
Returns: 2
376
{3, 2, 18, 13, 18, 14, 3, 20, 19, 19, 8, 19, 10, 11, 20, 7, 7, 17, 13, 6}
Returns: 14
922
{52, 46, 8, 52, 77, 30, 56, 75, 8, 7, 93, 29, 42, 83, 39, 96, 30, 40, 36, 57, 61, 81, 71, 62, 12}
Returns: 11
262
{17, 4, 15, 16, 5, 1, 11, 10, 18, 4, 19, 16, 2, 11, 8, 15, 1, 16, 12, 15, 11, 4}
Returns: 13
57
{34, 12, 23, 22, 14, 29, 1, 24, 14, 38, 31, 32, 24, 24, 1, 9, 30, 34, 3, 1, 17, 21, 19, 27, 20}
Returns: 2
683
{25, 13, 17, 3, 5, 13, 57, 19, 28, 49, 3, 34, 32, 37, 15, 33, 21, 58, 47, 16, 3, 36, 6, 19, 34}
Returns: 15
233
{9, 65, 64, 50, 3, 42, 13, 4, 7, 22, 71, 6, 38, 29, 25, 30, 20, 50, 65, 45, 56}
Returns: 4
425
{24, 62, 25, 94, 92, 2, 58, 16, 77, 78, 5, 8, 85, 52, 8, 63, 30, 87, 24, 96, 59, 86, 33, 49, 53}
Returns: 5
464
{2, 10, 15, 6, 4, 4, 6, 5, 8, 12, 15, 19, 18, 11, 11, 10, 19, 13, 1, 9, 15, 5, 10, 14}
Returns: 20
444
{2, 7, 22, 9, 16, 21, 32, 14, 31, 26, 39, 36, 9, 11, 20, 21, 34, 18, 37, 25, 31, 34, 15, 1, 16}
Returns: 13
130
{33, 16, 56, 37, 53, 56, 6, 56, 16, 33, 4, 7, 16, 25, 53, 40, 1, 24, 12, 27, 42, 8, 25, 39}
Returns: 3
321
{50, 12, 48, 41, 62, 30, 46, 52, 56, 61, 59, 78, 38, 46, 45, 59, 58, 18, 7, 69, 41, 59, 44}
Returns: 5
453
{28, 16, 95, 50, 5, 33, 90, 7, 83, 23, 84, 43, 51, 99, 20, 64, 47, 10, 80, 83, 89, 72, 25, 5, 63, 4, 67, 90, 51}
Returns: 5
501
{6, 16, 10, 6, 1, 7, 14, 5, 16, 16, 11, 10, 18, 17, 10, 9, 7, 12, 9, 8, 13, 7, 17, 19, 3, 4, 15, 19, 3, 19}
Returns: 21
407
{5, 11, 3, 22, 38, 12, 11, 20, 11, 21, 12, 25, 26, 11, 21, 27, 14, 36, 20, 36, 36, 2, 10, 30, 9, 37, 33, 2, 29}
Returns: 13
805
{7, 35, 6, 48, 43, 40, 5, 28, 51, 46, 49, 29, 23, 26, 50, 5, 56, 31, 31, 12, 12, 6, 19, 10, 50, 3, 3}
Returns: 17
933
{52, 9, 58, 17, 13, 32, 73, 21, 62, 47, 17, 27, 37, 56, 30, 35, 28, 43, 2, 18, 61, 33, 15, 38, 48, 54, 24, 5, 1}
Returns: 17
724
{65, 31, 14, 87, 93, 47, 40, 40, 53, 72, 99, 43, 53, 94, 17, 92, 32, 74, 24, 99, 93, 32, 45, 9, 8, 13, 15, 29}
Returns: 8
644
{9, 6, 19, 17, 14, 6, 1, 17, 5, 15, 6, 15, 14, 9, 17, 2, 4, 15, 14, 17, 19, 7, 5, 1, 10, 17}
Returns: 24
931
{13, 18, 32, 2, 4, 21, 16, 15, 3, 27, 39, 10, 11, 16, 32, 39, 6, 16, 22, 9, 10, 6, 2, 17, 14, 22, 28}
Returns: 23
213
{44, 50, 59, 26, 51, 50, 1, 14, 40, 6, 22, 3, 24, 45, 32, 6, 18, 7, 50, 32, 1, 11, 40, 58, 38, 45, 25, 18, 43, 24}
Returns: 4
13
{76, 43, 4, 78, 45, 65, 62, 23, 17, 68, 47, 12, 17, 47, 21, 69, 77, 27, 52, 70, 24, 26, 44, 66, 44, 9}
Returns: 1
699
{5, 18, 9, 10, 12, 19, 6, 15, 6, 14, 17, 9, 18, 15, 19, 18, 6, 11, 7, 10, 14}
Returns: 21
390
{35, 38, 6, 21, 5, 10, 19, 37, 3, 42, 6, 45, 7, 37, 39, 30, 41, 45, 8, 3, 49, 11, 12, 9, 5, 11, 42, 22, 20, 39}
Returns: 9
609
{49, 49, 10, 34, 9, 35, 29, 43, 13, 8, 33, 12, 1, 21, 5, 16, 25, 10, 22, 45, 43, 8, 24, 29, 41, 19, 5, 49, 35, 45}
Returns: 15
826
{47, 5, 31, 48, 48, 15, 2, 13, 7, 35, 21, 49, 29, 42, 44, 46, 25, 17, 16, 25, 7, 44, 19, 48, 1, 35, 6, 14, 48, 9}
Returns: 18
536
{34, 49, 17, 27, 27, 15, 18, 21, 47, 44, 9, 7, 48, 39, 49, 38, 29, 15, 12, 45, 47, 5, 31, 47, 4, 42, 1, 32, 5, 33}
Returns: 12
627
{32, 34, 30, 6, 16, 44, 4, 10, 48, 46, 9, 37, 42, 14, 15, 7, 9, 24, 1, 19, 12, 42, 46, 33, 16, 34, 41, 15, 23, 10}
Returns: 16
609
{73, 20, 27, 30, 97, 69, 75, 2, 93, 35, 13, 52, 47, 88, 17, 25, 36, 20, 92, 36, 73, 54, 3, 13, 72, 1, 23, 68, 20, 69}
Returns: 8
877
{29, 92, 49, 84, 68, 5, 18, 4, 13, 9, 58, 13, 50, 60, 21, 57, 77, 43, 70, 35, 63, 75, 18, 88, 50, 11, 47, 75, 44, 16}
Returns: 12
3
{29, 92, 49, 84, 68, 5, 18, 4, 13, 9, 58, 13, 50, 60, 21, 57, 77, 43, 70, 35, 63, 75, 18, 88, 50, 11, 47, 75, 44, 16}
Returns: 0
221
{15, 2, 80, 90, 43, 14, 84, 31, 14, 89, 56, 50, 61, 30, 99, 90, 94, 49, 1, 90, 74, 67, 52, 80, 2, 1, 88, 47, 80, 34}
Returns: 3
139
{75, 74, 31, 28, 49, 28, 1, 21, 30, 93, 71, 25, 68, 55, 82, 78, 86, 86, 92, 94, 69, 25, 16, 2, 5, 55, 31, 80, 66, 36}
Returns: 2
413
{65, 49, 15, 15, 1, 44, 1, 71, 90, 93, 54, 46, 95, 63, 79, 23, 41, 91, 96, 38, 98, 10, 68, 9, 70, 37, 1, 85, 69, 50}
Returns: 5
410
{14, 78, 35, 20, 62, 94, 97, 5, 84, 26, 2, 85, 2, 77, 43, 81, 20, 30, 53, 61, 41, 24, 22, 9, 12, 1, 72, 21, 61, 32}
Returns: 5
523
{24, 91, 33, 34, 60, 71, 17, 6, 56, 91, 1, 20, 50, 58, 90, 11, 8, 32, 82, 85, 73, 72, 20, 12, 9, 99, 15, 38, 59, 56}
Returns: 6
632
{93, 6, 37, 100, 36, 46, 78, 49, 70, 88, 80, 81, 58, 3, 30, 33, 1, 82, 81, 13, 95, 27, 70, 82, 97, 90, 24, 21, 86, 23}
Returns: 7
594
{77, 7, 39, 84, 64, 30, 36, 1, 8, 53, 63, 2, 32, 21, 15, 57, 9, 5, 22, 13, 95, 1, 17, 4, 73, 67, 1, 82, 26, 18}
Returns: 8
764
{30, 90, 17, 19, 80, 86, 3, 49, 17, 77, 14, 79, 60, 15, 32, 77, 52, 55, 53, 47, 35, 91, 1, 27, 94, 100, 56, 98, 5, 13}
Returns: 9
957
{23, 100, 100, 94, 100, 61, 98, 27, 51, 76, 86, 88, 1, 1, 62, 30, 30, 21, 19, 6, 18, 96, 12, 35, 52, 1, 2, 69, 28, 52}
Returns: 11
673
{24, 18, 74, 32, 75, 18, 58, 38, 6, 98, 1, 1, 75, 63, 24, 83, 8, 23, 7, 57, 2, 32, 15, 87, 53, 69, 25, 39, 31, 62}
Returns: 9
612
{1, 32, 94, 59, 29, 29, 23, 66, 84, 79, 31, 40, 89, 4, 66, 77, 38, 61, 19, 2, 99, 58, 1, 59, 61, 74, 48, 20, 37, 2}
Returns: 8
1000
{5, 14, 14, 15, 19, 6, 15, 8, 19, 11, 17, 3, 15, 19, 11, 19, 1, 7, 10, 6, 14, 19, 15, 15, 17, 12, 15, 7, 2, 6}
Returns: 30
589
{1, 18, 7, 15, 12, 12, 19, 4, 6, 19, 18, 10, 15, 5, 5, 4, 4, 4, 7, 4, 5, 5, 11, 16, 10, 18, 13, 16, 6, 1}
Returns: 25
637
{14, 7, 13, 4, 6, 16, 4, 12, 4, 15, 5, 17, 13, 9, 8, 16, 17, 1, 8, 8, 3, 5, 6, 7, 2, 2, 12, 3, 19, 10}
Returns: 27
69
{15, 9, 5, 17, 9, 15, 16, 10, 16, 9, 18, 15, 17, 17, 16, 13, 8, 10, 2, 17, 12, 9, 15, 19, 5, 12, 17, 3, 11, 15}
Returns: 4
724
{16, 14, 11, 8, 10, 9, 13, 12, 10, 6, 2, 19, 7, 10, 3, 5, 5, 6, 4, 13, 9, 14, 4, 15, 2, 4, 14, 15, 10, 10}
Returns: 29
975
{7, 14, 5, 19, 8, 15, 17, 10, 13, 11, 11, 7, 7, 3, 12, 1, 12, 15, 19, 15, 2, 17, 18, 12, 9, 2, 19, 17, 15, 14}
Returns: 30
865
{13, 6, 15, 8, 19, 19, 9, 2, 14, 1, 5, 19, 5, 9, 6, 18, 17, 5, 9, 10, 11, 17, 17, 12, 18, 2, 12, 4, 4, 2}
Returns: 30
1000
{8, 3, 2, 24, 18, 4, 27, 4, 10, 18, 7, 29, 12, 5, 23, 20, 28, 3, 29, 13, 27, 4, 17, 25, 24, 9, 14, 13, 29, 14}
Returns: 25
996
{22, 6, 21, 8, 6, 22, 22, 7, 4, 21, 7, 7, 19, 9, 22, 3, 11, 11, 11, 3, 4, 2, 11, 8, 3, 3, 13, 9, 11, 23}
Returns: 30
971
{6, 10, 4, 11, 22, 11, 2, 15, 13, 6, 4, 7, 16, 7, 13, 22, 2, 20, 4, 8, 16, 7, 9, 12, 13, 21, 9, 16, 14, 13}
Returns: 30
992
{63, 100, 100, 16, 31, 15, 100, 53, 69, 87, 87, 32, 11, 25, 43, 80, 33, 100, 58, 19, 100, 100, 4, 41, 85, 64, 4, 63, 41, 32}
Returns: 11
368
{100, 28, 3, 78, 100, 100, 60, 15, 100, 28, 41, 71, 92, 1, 92, 38, 19, 76, 100, 15, 26, 11, 94, 79, 58, 91, 100, 97, 20, 53}
Returns: 4
53
{1, 1, 1, 23, 25, 26, 28, 33, 54, 100 }
Returns: 2
50
{60, 2, 1, 2, 1, 2, 1, 2, 25, 1, 2, 1, 2, 26, 1, 2, 1, 40, 41, 1, 1, 1, 40, 16, 1, 1, 16, 1, 17, 2 }
Returns: 3
1
{1, 1, 1 }
Returns: 1
75
{7, 7, 16, 7, 7, 16, 7, 7, 16, 7, 38, 38 }
Returns: 3
10
{1, 1, 100 }
Returns: 2
1000
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 14, 15, 16, 17, 18, 19, 20, 22, 23, 34, 5, 6, 7, 4, 4, 3, 2 }
Returns: 29
10
{1, 1, 1, 1, 1, 20 }
Returns: 5
460
{2, 3, 1, 5, 1, 6, 1, 24, 3, 2, 58, 69, 67, 35, 64, 27, 32, 9, 45, 62, 54, 87, 32, 17, 23, 14, 15, 16, 68, 2 }
Returns: 7
10
{1, 1, 11 }
Returns: 2
1000
{42, 68, 35, 1, 70, 25, 79, 59, 63, 65, 6, 46, 82, 28, 62, 92, 96, 43, 28, 37, 92, 5, 3, 54, 93, 83, 22, 17, 19, 96 }
Returns: 13
1000
{100, 97, 94, 91, 88, 85, 82, 79, 76, 73, 70, 67, 64, 61, 58, 55, 52, 49, 46, 43, 40, 37, 34, 31, 28, 25, 22, 19, 16, 13 }
Returns: 10
278
{1, 2, 3, 3, 12, 17, 19, 26, 27, 28, 29, 30, 37, 49, 54, 75, 76, 85 }
Returns: 5
74
{5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 10, 10, 10, 10, 30, 30, 30, 30, 40, 41 }
Returns: 2
703
{69, 71, 89, 40, 84, 13, 57, 88, 80, 45, 75, 3, 75, 41, 73, 40, 95, 42, 55, 54, 4 }
Returns: 8
180
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 60, 60, 100, 100 }
Returns: 3
20
{1, 1, 1, 3, 7, 7, 80 }
Returns: 3
1000
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
Returns: 30
1000
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, 44, 55, 66, 77, 88 }
Returns: 24
9
{4, 2, 1, 10 }
Returns: 2
100
{2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }
Returns: 4
10
{1, 1, 1, 100 }
Returns: 3
10
{20, 5 }
Returns: 1
18
{9, 2, 2, 2, 10 }
Returns: 3
1000
{73, 76, 90, 42, 84, 13, 57, 88, 80, 45, 80, 78, 41, 73, 40, 97, 42, 1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 }
Returns: 9
1000
{1, 10, 15, 16, 17, 20, 30, 25, 40, 44, 40, 44, 13, 13, 13, 100, 99, 98, 99, 45, 44, 12, 11, 10, 2, 3, 4, 55, 60, 77 }
Returns: 17
19
{2, 2, 2, 10, 10 }
Returns: 3
1000
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
Returns: 30
50
{1, 2, 3, 4, 5, 6, 100 }
Returns: 5
999
{97, 58, 46, 87, 1, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 54, 87, 52, 21, 23, 24, 85, 87, 45, 88, 89, 19, 99, 87 }
Returns: 13
18
{2, 2, 10, 10, 2 }
Returns: 3
17
{1, 1, 10 }
Returns: 2
18
{2, 2, 2, 9, 9, 10 }
Returns: 2
20
{30, 1 }
Returns: 1
168
{1, 8, 80, 100, 90, 1, 1, 1, 1, 1, 1, 60 }
Returns: 3