Skip to content

Commit 90f59aa

Browse files
authored
Update class name
1 parent 9842846 commit 90f59aa

File tree

1 file changed

+33
-32
lines changed

1 file changed

+33
-32
lines changed

DynamicProgramming/MinimumSumPartition.java

+33-32
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
package DynamicProgramming;
12
// Partition a set into two subsets such that the difference of subset sums is minimum
23

34
/*
@@ -17,56 +18,56 @@
1718
import java.util.*;
1819
import java.lang.*;
1920
import java.io.*;
20-
class GFG
21-
{
21+
public class MinimumSumPartition
22+
{
2223
public static void main (String[] args)
23-
{
24-
Scanner sc=new Scanner(System.in);
25-
int t=sc.nextInt();
24+
{
25+
Scanner sc = new Scanner(System.in);
26+
int t = sc.nextInt();
2627
while(t-->0)
2728
{
28-
int n=sc.nextInt();
29-
int arr[]=new int[n];
30-
int sum=0;
31-
for(int i=0;i<n;i++)
29+
int n = sc.nextInt();
30+
int arr[] = new int[n];
31+
int sum = 0;
32+
for(int i = 0;i < n;i++)
3233
{
33-
arr[i]=sc.nextInt();
34-
sum+=arr[i];
34+
arr[i] = sc.nextInt();
35+
sum += arr[i];
3536
}
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]));
37+
int ans[] = new int[sum];
38+
ans = subset(arr,sum);
39+
int min = Integer.MAX_VALUE;
40+
for (int i = 0; i < ans.length; i++)
41+
min = Math.min(min,(sum-2*ans[i]));
4142
System.out.println(min);
4243
}
4344
}
4445
static int[] subset(int arr[],int sum)
4546
{
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;
47+
int n = arr.length;
48+
boolean dp[][] = new boolean[n+1][sum+1];
49+
for(int i = 0; i <= n; i++)
50+
dp[i][0] = true;
51+
for(int i = 1; i <= sum; i++)
52+
dp[0][i] = false;
5253
// subset sum concept
53-
for(int i=1;i<=n;i++)
54+
for(int i = 1; i <= n; i++)
5455
{
55-
for(int j=1;j<=sum;j++)
56+
for(int j = 1; j <= sum; j++)
5657
{
57-
if(arr[i-1]<=j)
58-
dp[i][j]=dp[i-1][j-arr[i-1]] || dp[i-1][j];
58+
if(arr[i-1] <= j)
59+
dp[i][j] = dp[i-1][j-arr[i-1]] || dp[i-1][j];
5960
else
60-
dp[i][j]=dp[i-1][j];
61+
dp[i][j] = dp[i-1][j];
6162
}
6263
}
6364
//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++)
65+
int index[] = new int[sum];
66+
int p = 0;
67+
for(int i = 0 ; i <= sum / 2; i++)
6768
{
68-
if(dp[n][i]==true)
69-
index[p++]=i;
69+
if(dp[n][i] == true)
70+
index[p++] = i;
7071
}
7172
return index;
7273
}

0 commit comments

Comments
 (0)