Given infinte number of elements of form and ( n >= 0 ). The task is to find the minimum count of elements chosen such that there sum is equal to K.
Input : K = 48
Output : 6
elements chosen are: (1 + 1 + 1 + 10 + 10 + 25)
Input : 69
Output : 9
elements chosen are: (1 + 1 + 1 + 1 + 10 + 10 + 10 + 10 + 25)
There are infinite number of the following elements :
1, 10, 25, 100, 1000, 2500, 10000, 100000, 250000 … and so on.
Greedy Approach won’t work here. For K = 66, by Greedy Approach minimum count will be 9 and chosen elements are 25 + 25 + 10 + 1 + 1 + 1 + 1 + 1 + 1 = 66. But its optimum answer is 6 when these elements are chosen: 25 + 10 + 10 + 10 + 10 + 1 = 66. So, Dynamic Programming will work here. But simple DP cannot be applied because K can go upto 10^9 .
Dynamic Programming approach:
- Precompute the minimum no. of elements chosen that constitutes sum upto 99 and store it in memo array.
- Also, sums upto 99 can only be formed by the combinations of 1, 10 and 25.
- Starting from end of K, iterate over each last 2 digits to find minimum no. of elements chosen that will sum to last two digits.
- Sum them all to find the minimum count.
Illustration of the above approach:
Let’s take K = 250166
Let min_count = 0, last 2 digits = 66
add minimum number of elements to min_count that sums to 66 (it is calculated from memo array
that we have precomputed).
min_count = min_count + 6,
Now, min_count = 6, last 2 digits = 01
add minimum number of elements to min_count sums to 1.
min_count = min_count + 1,
Now, min_count = 7, last 2 digits = 25
add minimum number of elements to min_count sums to 25.
min_count = min_count + 1,
Now, min_count = 8.
So, minimum number of elements chosen that sums to 250166 is 8.
Optimal chosen Elements are (250000, 100, 25, 10, 10, 10, 10, 1)
Below is the implementation of the above approach.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Generate a combination of minimum coins that sums to a given value
- Count of distinct sums that can be obtained by adding prime numbers from given arrays
- Count number of ordered pairs with Even and Odd Sums
- Index with Minimum sum of prefix and suffix sums in an Array
- Partition a set into two subsets such that the difference of subset sums is minimum
- Minimum value to be added to the prefix sums at each array indices to make them positive
- Find original array from encrypted array (An array of sums of other elements)
- Replace all elements by difference of sums of positive and negative numbers after that element
- Count of pairs between two arrays such that the sums are distinct
- Maximum Length of Sequence of Sums of prime factors generated by the given operations
- Find all distinct subset (or subsequence) sums of an array
- Find pairs in array whose sums already exist in array
- Partition into two subarrays of lengths k and (N - k) such that the difference of sums is maximum
- Maximum absolute difference of value and index sums
- K maximum sums of non-overlapping contiguous sub-arrays
- Partitioning into two contiguous element subarrays with equal sums
- K maximum sums of overlapping contiguous sub-arrays
- Possible two sets from first N natural numbers difference of sums as D
- Find all distinct subset (or subsequence) sums of an array | Set-2
- Smallest Integer to be inserted to have equal sums
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.