1. You are given a number n and a number m representing number of rows and columns in a maze.
2. You are standing in the top-left corner and have to reach the bottom-right corner. Only two moves are allowed 'h' (1-step horizontal) and 'v' (1-step vertical).Input Format
3. Complete the body of getMazePath function - without changing signature - to get the list of all paths that can be used to move from top-left to bottom-right.
Use sample input and output to take idea about output.
A number nOutput Format
A number m
Contents of the arraylist containing paths as shown in sample output
Constraints
0 <= n <= 10
0 <= m <= 10
Sample Input
3
3
Sample Output
[hhvv, hvhv, hvvh, vhhv, vhvh, vvhh]
Solution:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(), m = sc.nextInt();
System.out.println(getMazePaths(1,1,n,m));
}
// sr - source row
// sc - source column
// dr - destination row
// dc - destination column
public static ArrayList<String> getMazePaths(int sr, int sc, int dr, int dc) {
ArrayList<String> res = new ArrayList<>();
if(sr > dr || sc > dc)
return res;
if(sr == dr && sc == dc){
res.add("");
return res;
}
ArrayList<String> hrz = getMazePaths(sr,sc+1,dr,dc), vert = getMazePaths(sr+1,sc,dr,dc);
for(String s:hrz)
res.add("h"+s);
for(String s:vert)
res.add("v"+s);
return res;
}
}
Comments
Post a Comment