-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBackTracking.java
71 lines (57 loc) · 1.75 KB
/
BackTracking.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public class BackTracking {
public static void printArr(int[] arr){
for (int i=0; i<arr.length; i++){
System.out.print(arr[i] + " ");;
}
System.out.println();
}
public static void chnageArr(int[] arr, int i, int val){
//Base case
if (i==arr.length) {
printArr(arr);
return;
}
// recursion step
arr[i] = val;
chnageArr(arr, i+1, val+1);
// Backtracking step
arr[i] -= 2;
}
// Find all Subsets
public static void findSubSets(String str, String ans, int i){
// base case
if (i==str.length()){
if (ans.length()==0){
System.out.print("null ");
}else{
System.out.print(ans + " ");
}
return;
}
// recursion call
// yes choice
findSubSets(str, ans+str.charAt(i), i+1);
// no choice
findSubSets(str, ans, i+1);
}
public static void find_permutations(String str, String ans){
// base case
if (str.length()==0){
System.out.print(ans + " ");
return;
}
// recursion call
for (int i=0; i<str.length(); i++){
char curr = str.charAt(i);
String new_string = str.substring(0, i) + str.substring(i+1, str.length()); // next boundary is not included
find_permutations(new_string, ans+curr);
}
}
public static void main(String[] args) {
// int[] arr = new int[5];
// chnageArr(arr, 0, 1);
// printArr(arr);
// findSubSets("abc", "", 0);
find_permutations("abc", "");
}
}