Problem Statement
You are given a balance scale to weigh some items. Unfortunately the weights you use as counterbalances are not accurate. Some of them may be marked incorrectly - either 1 gram too heavy or one gram too light. (Some may be marked correctly.)
You are given a
Definition
- Class:
- MislabeledWeights
- Method:
- fewest
- Parameters:
- int[], int
- Returns:
- int
- Method signature:
- int fewest(int[] weights, int testWeight)
- (be sure your method is public)
Notes
- A weight labeled '1 gram' (represented as the integer 1 in the int[] of weights) can only be 1 or 2 grams. All other weights can be plus or minus 1 gram of their actual labeled weight.
- There may be duplicates in the weights but you may only use each element at most once.
Constraints
- weights will contain between 1 and 10 elements, inclusive.
- Each element of weights will be between 1 and 1000, inclusive.
- testWeight will be between 1 and 10000, inclusive.
Examples
{1,1,1}
6
Returns: 3
The subset of all weights is the only good one. If all the real weights are 2 grams, then they sum up to 6 grams.
{1,1,1}
7
Returns: -1
Even if each weight was actually 2 grams, there would still be no way for them to sum to 7 grams.
{1,2,3,4,5}
7
Returns: 2
There are many good subsets. For example, {1, 5} (1 + 6 = 7 or 2 + 5 = 7), or {3, 4} (3 + 4 = 7 or 4 + 3 = 7), or {3, 5} (3 + 4 = 7 or 2 + 5 = 7), or other variants. In any case, the fewest number of weights in a good subset is 2.
{1,2,4,8,16,32,64,128}
47
Returns: 2
{999,1000,1000,999,1000}
3000
Returns: 3
{3,3,3,3,3,3,3,3,3,3}
25
Returns: 7
{1,2,3,4,5,6,7,8,9,10}
50
Returns: 6
{1,187,243,729,561,683,81}
841
Returns: -1
{1,20,100,200,500,1000}
150
Returns: -1
{12,415,34,324,678,345,21,458,456}
1445
Returns: 5
{123,234,345,456,567,678,789}
2514
Returns: 6
{1000,1000,1000,1000,1000,1000,1000,1000,1000,1000}
10000
Returns: 10
{1000,1000,1000,1000,1000,1000,1000,1000,1000,1000}
9990
Returns: 10
{1000,1000,1000,1000,1000,1000,1000,1000,1000,1000}
1
Returns: -1
{1,1,1,1,1,1,1,1,1,1}
19
Returns: 10
{1,2,2,2,3,3,4,4,5,5}
25
Returns: 5
{1,10,20,40,80,160,320,640,1000,1000}
234
Returns: 4
{1000,500,250,125,37,12,6,1}
2000
Returns: -1
{1000,500,250,125,37,12,6,1}
1930
Returns: 6
{1000,500,250,125,37,12,6,1}
1150
Returns: -1
{1, 243, 81, 683}
841
Returns: -1
682 + 242 - 1 - 82 = 841 can't put 1 or 82 on the "other" side.
{150,515,683,228,903,627,877,680}
4037
Returns: 7
{888,381,981,143,652,404,620,355}
4422
Returns: 8
{575,216,143,188,667,6}
1131
Returns: 5
{738,185}
922
Returns: 2
{879,281,819,898,663,808}
3531
Returns: 5
{715,639}
1352
Returns: 2
{60,868,727,229,441}
1598
Returns: 4
{367,888}
1257
Returns: 2
{434,116,806,624,938,913,731,988,247}
5796
Returns: 9
{934,858,234,660,781,132}
2939
Returns: 5
{135,346,647,920,194}
2046
Returns: 4
{744,675,766,367,631,601,762,620,399}
2505
Returns: 4
{147,321,460,9,790}
1398
Returns: 3
{803,19,401,237}
637
Returns: 2
{710,437}
1149
Returns: 2
{179}
178
Returns: 1
{326}
7737
Returns: -1
{550}
7912
Returns: -1
{748,129,892,819,44}
9125
Returns: -1
{708,690,921,343,117,257}
1998
Returns: 4
{845,200,277,705}
6785
Returns: -1
{586,193,480,640,249,533,159}
2487
Returns: 5
{388,897,527}
1814
Returns: 3
{538,159,855,351,849,158,734,910,274,813}
4667
Returns: 7
{977}
6975
Returns: -1
{391,658,122,852,751,460,677,472,867,125}
4136
Returns: 7
{397}
4672
Returns: -1
{571,338,767}
571
Returns: 1
{83,574}
8921
Returns: -1
{954,966,629,611}
9133
Returns: -1
{478}
5118
Returns: -1
{121,460,959,509,682}
1773
Returns: 4
{320,563,689,109,598,264,950,925,565}
4058
Returns: 7
{617,373,129,247,989,93}
2448
Returns: 6
{88,974,806}
1867
Returns: 3
{509,181,779,742,157,800,114,414}
3580
Returns: 7
{868,730,664}
1599
Returns: 2
{981,981,285,782,922,477}
2884
Returns: 3
{505,283,920,594,591,732,981}
3734
Returns: 5
{772,482,949,475,16,386,693,617}
3989
Returns: 6
{86,297,663,300,905,432,213}
2896
Returns: 7
{144,484,789,446,248,984,794,36}
3780
Returns: 7
{42,730,968,455,72,782,118}
2267
Returns: 4
{4,767,661,826}
2261
Returns: 4
{288,76,971,71}
432
Returns: 3
{294,249,377,622,928,921,203,517,952}
8304
Returns: -1
{698,213,839,719,518,711,720,404,968}
5169
Returns: 7
{851,286,725,772,928,393}
2252
Returns: 4
{421,704}
1126
Returns: 2
{600,837}
1437
Returns: 2
{411,542,608}
1017
Returns: 2
{497,161,261,757}
1178
Returns: 3
{504,34,770,727,639,58,196,922,644,767}
4757
Returns: 9
{685,981,15,510,727,522,538,657,225}
3879
Returns: 8
{521,325,380,796,481,855}
2559
Returns: 5
{732}
872
Returns: -1
{156,664}
157
Returns: 1
{424,487,30,321,6,133,720,655,533,696}
2259
Returns: 4
{78,461,529,208,642,868,367,662}
2304
Returns: 5
{319,759,34,839}
793
Returns: 2
{820,973}
1795
Returns: 2
{790,77}
868
Returns: 2
{228,802,971,462}
2339
Returns: -1
{166,752,846,383,201,51,146,696,351,622}
4212
Returns: 10
{725,315,658,447,919,41,552,913}
3807
Returns: 6
{510,398,776,331,706}
2018
Returns: 4
{54,378,401,556,589,298,469,240}
2428
Returns: 7
{516,285,49}
333
Returns: 2
{487,442,255,449,434,44,529,365,231,704}
3090
Returns: 7
{960,674,940,313,193,368,441,58,553}
4501
Returns: 9
{400,877,891}
890
Returns: 1
{509,94,868}
869
Returns: 1
{799,986,987}
2884
Returns: -1
{904,678,365}
9346
Returns: -1
{259,370,580,9,189,218}
1623
Returns: 6
{432,311,505,337,905,727}
3219
Returns: 6
{198,556,712,984}
1892
Returns: 3
{598,635,328,245,813,692,647}
2096
Returns: 3
{729,147}
876
Returns: 2
{878,964,607,887,982}
3712
Returns: 4
{460,344,860,418,414,504}
2953
Returns: -1
{299,950,544,42,428,365,687,582}
5221
Returns: -1
{943,906,89}
1850
Returns: 2
{625,596,815,550,748}
1371
Returns: 2
{716}
715
Returns: 1
{90,411,805,714,184,277,80}
2285
Returns: 5
{302,935,228,61,12,418,364,572,278,502}
3397
Returns: 9
{262,873}
1136
Returns: 2
{162,127}
288
Returns: 2
{427,878,615,606,290,481,645}
3940
Returns: 7
{380,617,517,780,310,547,387,275}
3269
Returns: 7
{999,958,940,816,488,941,568,753,449}
6177
Returns: -1
{28,182}
28
Returns: 1
{166,105,526,304,734,607}
1837
Returns: 5
{963,37,622,534}
36
Returns: 1
{196,763,844,312,435}
2354
Returns: 4
{361,101}
462
Returns: 2
{870,645,878,328}
1515
Returns: 2
{315,236,484,478,334,444,201}
1358
Returns: 4
{125,341,723,362}
1550
Returns: 4
{3, 3, 3 }
1
Returns: -1
{1, 1, 1, 1 }
8
Returns: 4
{1000, 900 }
1900
Returns: 2
{1, 3, 4 }
1
Returns: 1
{1, 1, 1, 100 }
199
Returns: -1