Skip to content

Commit 9423b2a

Browse files
sandeepsj64json
authored andcommitted
Sum of subsets (#9)
* Create Code.java * Create README.md
1 parent 6ea9afe commit 9423b2a

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed

Backtracking/Sum of subsets/Code.java

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// import visualization libraries {
2+
import org.algorithm_visualizer.*;
3+
import java.util.Random;
4+
// }
5+
6+
class Main {
7+
// define tracer variables {
8+
Array1DTracer array1dTracer = new Array1DTracer("Set");
9+
LogTracer logTracer = new LogTracer("Console");
10+
// }
11+
12+
// define input variables
13+
int n;
14+
int s[];
15+
int d;
16+
17+
void solve()
18+
{
19+
int[] sel=new int[n+1];
20+
int k=0,sum=0,found=0;
21+
sel[0]=1;
22+
array1dTracer.select(k);
23+
Tracer.delay();
24+
while(true) {
25+
if(k<n && sel[k]==1) {
26+
if(sum+s[k]==d)
27+
{
28+
found=1;
29+
logTracer.print("{");
30+
for(int i=0;i<n;i++)
31+
if(sel[i]==1)
32+
logTracer.print(s[i]+" ");
33+
logTracer.println("}");
34+
sel[k]=0;
35+
Tracer.delay();
36+
array1dTracer.deselect(k);
37+
Tracer.delay();
38+
}
39+
else if(sum+s[k]<d)
40+
sum+=s[k];
41+
else{
42+
sel[k]=0;
43+
array1dTracer.deselect(k);
44+
Tracer.delay();
45+
}
46+
}
47+
else
48+
{
49+
k--;
50+
while(k>=0 && sel[k]==0)
51+
k--;
52+
if(k<0)
53+
break;
54+
sel[k]=0;
55+
array1dTracer.deselect(k);
56+
Tracer.delay();
57+
sum-=s[k];
58+
}
59+
k++;
60+
if(k<n){
61+
sel[k]=1;
62+
array1dTracer.select(k);
63+
Tracer.delay();
64+
}
65+
}
66+
if(found==0)
67+
logTracer.println("Not possible subsets");
68+
}
69+
70+
Main() {
71+
// visualize {
72+
Layout.setRoot(new VerticalLayout(new Commander[]{array1dTracer, logTracer}));
73+
Tracer.delay();
74+
// }
75+
n=10;
76+
//Randomizing the array{
77+
s=new int[n];
78+
Random r=new Random();
79+
for(int i=0;i<n;i++)
80+
s[i]=r.nextInt(30);
81+
d=r.nextInt(100);
82+
//}
83+
84+
logTracer.print("The Given set is: ");
85+
for(int x:s)
86+
logTracer.print(x+",");
87+
logTracer.println("\nDesired sum is:"+d);
88+
logTracer.println("The possible subsets of sum "+d+" are: ");
89+
array1dTracer.set(s);
90+
Tracer.delay();
91+
solve();
92+
}
93+
94+
public static void main(String[] args) {
95+
new Main();
96+
}
97+
}

Backtracking/Sum of subsets/README.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
# Sum of Subset using BackTracking
3+
4+
5+
6+
7+
8+
9+
## References
10+
-[Geeksforgeeks](https://www.geeksforgeeks.org/subset-sum-problem-dp-25/)

0 commit comments

Comments
 (0)