File tree 2 files changed +107
-0
lines changed
Backtracking/Sum of subsets
2 files changed +107
-0
lines changed Original file line number Diff line number Diff line change
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 ("\n Desired 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
+ }
Original file line number Diff line number Diff line change
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/ )
You can’t perform that action at this time.
0 commit comments