Skip to content

Commit 56fd042

Browse files
authored
Merge pull request #792 from Manda303/main
Minimum Subset Sum Difference.cpp
2 parents 5ac9a1a + c29984c commit 56fd042

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

Minimum Subset Sum Difference.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
#define int long long int
4+
#define fast \
5+
cin.sync_with_stdio(false); \
6+
cin.tie(NULL); \
7+
cout.tie(NULL);
8+
9+
bool dp[1001][10001];
10+
int MinSubseSumDiff(int n, int arr[], int sum)
11+
{
12+
for (int i = 0; i <= n; i++)
13+
dp[i][0] = 1;
14+
for (int i = 1; i <= sum; i++)
15+
dp[0][i] = 0;
16+
for (int i = 1; i <= n; i++)
17+
{
18+
for (int j = 1; j <= sum; j++)
19+
{
20+
if (arr[i - 1] <= j)
21+
dp[i][j] = dp[i - 1][j - arr[i - 1]] || dp[i - 1][j];
22+
else
23+
dp[i][j] = dp[i - 1][j];
24+
}
25+
}
26+
27+
//Find the minimum diff for valid sum
28+
int diff = sum;
29+
for (int i = 0; i <= sum / 2; i++)
30+
{
31+
if (dp[n][i] == 1)
32+
diff = min(diff, sum - 2 * i);
33+
}
34+
return diff;
35+
}
36+
37+
signed main()
38+
{
39+
fast;
40+
int n = 4;
41+
int arr[4] = {19, 6, 11, 5};
42+
int sum = accumulate(arr, arr + n, 0);
43+
//memonization
44+
memset(dp, 0, sizeof(dp));
45+
46+
cout << MinSubseSumDiff(n, arr, sum);
47+
48+
return 0;
49+
}

0 commit comments

Comments
 (0)