Skip to content

Commit c58d96b

Browse files
authored
Merge pull request TheAlgorithms#1383 from iamhrishikeshpadhye/patch-1
Update and rename Minimum sum partition to MinimumSumPartition.java
2 parents de4b2be + 6f8f5be commit c58d96b

File tree

2 files changed

+73
-78
lines changed

2 files changed

+73
-78
lines changed

DynamicProgramming/Minimum sum partition

-78
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// Partition a set into two subsets such that the difference of subset sums is minimum
2+
3+
/*
4+
Input: arr[] = {1, 6, 11, 5}
5+
Output: 1
6+
Explanation:
7+
Subset1 = {1, 5, 6}, sum of Subset1 = 12
8+
Subset2 = {11}, sum of Subset2 = 11
9+
10+
Input: arr[] = {36, 7, 46, 40}
11+
Output: 23
12+
Explanation:
13+
Subset1 = {7, 46} ; sum of Subset1 = 53
14+
Subset2 = {36, 40} ; sum of Subset2 = 76
15+
*/
16+
17+
import java.util.*;
18+
import java.lang.*;
19+
import java.io.*;
20+
class GFG
21+
{
22+
public static void main (String[] args)
23+
{
24+
Scanner sc=new Scanner(System.in);
25+
int t=sc.nextInt();
26+
while(t-->0)
27+
{
28+
int n=sc.nextInt();
29+
int arr[]=new int[n];
30+
int sum=0;
31+
for(int i=0;i<n;i++)
32+
{
33+
arr[i]=sc.nextInt();
34+
sum+=arr[i];
35+
}
36+
int ans[]=new int[sum];
37+
ans=subset(arr,sum);
38+
int min=Integer.MAX_VALUE;
39+
for(int i=0;i<ans.length;i++)
40+
min=Math.min(min,(sum-2*ans[i]));
41+
System.out.println(min);
42+
}
43+
}
44+
static int[] subset(int arr[],int sum)
45+
{
46+
int n=arr.length;
47+
boolean dp[][]=new boolean[n+1][sum+1];
48+
for(int i=0;i<=n;i++)
49+
dp[i][0]=true;
50+
for(int i=1;i<=sum;i++)
51+
dp[0][i]=false;
52+
// subset sum concept
53+
for(int i=1;i<=n;i++)
54+
{
55+
for(int j=1;j<=sum;j++)
56+
{
57+
if(arr[i-1]<=j)
58+
dp[i][j]=dp[i-1][j-arr[i-1]] || dp[i-1][j];
59+
else
60+
dp[i][j]=dp[i-1][j];
61+
}
62+
}
63+
//storing last dp column whose value is true till sum/2
64+
int index[]=new int[sum];
65+
int p=0;
66+
for(int i=0;i<=sum/2;i++)
67+
{
68+
if(dp[n][i]==true)
69+
index[p++]=i;
70+
}
71+
return index;
72+
}
73+
}

0 commit comments

Comments
 (0)