File tree Expand file tree Collapse file tree 2 files changed +107
-0
lines changed
Backtracking/Sum of subsets Expand file tree Collapse file tree 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