Skip to content

Commit c5f9ad1

Browse files
committed
return sum to K
1 parent b3ed465 commit c5f9ad1

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
2+
public class Recursion2_ReturnSubsetsSumToK {
3+
private static int[][] subsetsSumK (int input[], int k, int start, int end){
4+
5+
if (start > end){
6+
if (k==0){
7+
int[][] output = new int[1][0];
8+
return output;
9+
}
10+
else{
11+
int[][] output = new int[0][0];
12+
return output;
13+
}
14+
}
15+
16+
int[][] smallAns1 = subsetsSumK(input, k-input[start], start + 1, end);
17+
int[][] smallAns2 = subsetsSumK(input, k, start+1, end);
18+
19+
//initialize rows
20+
int[][] ans = new int[smallAns1.length + smallAns2.length][];
21+
//loop over smallAns1 rows
22+
for(int i = 0; i<smallAns1.length;i++){
23+
//add columns len + 1
24+
ans[i] = new int[smallAns1[i].length + 1];
25+
//add first element
26+
ans[i][0] = input[start];
27+
//add remaining elements
28+
for(int j = 0; j<smallAns1[i].length; j++){
29+
ans[i][j+1] = smallAns1[i][j];
30+
}
31+
}
32+
33+
//copy smallAns2 k elements
34+
35+
//loop over smallAns2 elements
36+
for(int i = 0; i<smallAns2.length; i++){
37+
//add columns after smallAns1 ki length
38+
ans[i + smallAns1.length] = new int[smallAns2[i].length];
39+
for(int j = 0; j<smallAns2[i].length; j++){
40+
ans[i + smallAns1.length][j] = smallAns2[i][j];
41+
}
42+
}
43+
44+
return ans;
45+
}
46+
47+
// Return a 2D array that contains all the subsets which sum to k
48+
public static int[][] subsetsSumK(int input[], int k) {
49+
// Write your code here
50+
int start = 0;
51+
int end = input.length-1;
52+
int[][] jawaab = subsetsSumK(input, k, start, end);
53+
return jawaab;
54+
}
55+
56+
}

0 commit comments

Comments
 (0)