public class Main {
public static void main
(String[] args
) { System.
out.
println(minElementsForSum
(new int[]{25,
10,
5},
30)); System.
out.
println(minElementsForSum
(new int[]{2,
1,
4,
3,
5,
6},
6)); }
static int minElementsForSum(int[] elems, int sum){
int[] minElems = new int[sum + 1];
for(int i
= 1; i
<= sum
; i
++) minElems
[i
] = Integer.
MAX_VALUE; for(int elem: elems)
for(int i = sum; i >= elem; i--)
if(minElems
[i
- elem
] != Integer.
MAX_VALUE) minElems
[i
] = Math.
min(minElems
[i
], minElems
[i
- elem
] + 1); return minElems[sum];
}
}
cHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtaW5FbGVtZW50c0ZvclN1bShuZXcgaW50W117MjUsIDEwLCA1fSwgMzApKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluRWxlbWVudHNGb3JTdW0obmV3IGludFtdezIsIDEsIDQsIDMsIDUsIDZ9LCA2KSk7CiAgICB9CiAgICBzdGF0aWMgaW50IG1pbkVsZW1lbnRzRm9yU3VtKGludFtdIGVsZW1zLCBpbnQgc3VtKXsKICAgICAgICBpbnRbXSBtaW5FbGVtcyA9IG5ldyBpbnRbc3VtICsgMV07CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBzdW07IGkrKykgbWluRWxlbXNbaV0gPSBJbnRlZ2VyLk1BWF9WQUxVRTsKICAgICAgICBmb3IoaW50IGVsZW06IGVsZW1zKSAKICAgICAgICAgICAgZm9yKGludCBpID0gc3VtOyBpID49IGVsZW07IGktLSkgCiAgICAgICAgICAgICAgICBpZihtaW5FbGVtc1tpIC0gZWxlbV0gIT0gSW50ZWdlci5NQVhfVkFMVUUpIG1pbkVsZW1zW2ldID0gTWF0aC5taW4obWluRWxlbXNbaV0sIG1pbkVsZW1zW2kgLSBlbGVtXSArIDEpOwogICAgICAgIHJldHVybiBtaW5FbGVtc1tzdW1dOwogICAgfQp9