get stair path
user_4666436
java
3 years ago
2.6 kB
3
Indexable
package recursion; //https://pepcoding.com/resources/online-java-foundation/recursion-with-arraylists/get-stair-paths-official/ojquestion import java.util.*; public class getStairPathQ3 { public static void main(String args[]) { Scanner scn = new Scanner(System.in); int num = scn.nextInt(); ArrayList<String> res = getStairPaths(num); System.out.println("Your result is : "); System.out.println(res); } public static ArrayList<String> getStairPathsFor1Step(int n){ if(n == 1) { ArrayList<String> baseResult = new ArrayList<>(); baseResult.add("1"); return baseResult; } ArrayList<String> resFor1 = getStairPathsFor1Step(n-1); ArrayList<String> finalResFor1 = new ArrayList<>(); for(int i=0;i<resFor1.size();i++) { String for1 = resFor1.get(i); for1 += '1'; finalResFor1.add(for1); } return finalResFor1; } public static ArrayList<String> getStairPathsFor2Step(int n){ if(n == 1) { ArrayList<String> baseResult = new ArrayList<>(); baseResult.add("1"); return baseResult; } if(n == 2) { ArrayList<String> baseResult = new ArrayList<>(); baseResult.add("2"); return baseResult; } ArrayList<String> finalResFor2 = new ArrayList<>(); for(int j = 1;j<n;j++) { System.out.println("(n-j) is : "+(n-j)); ArrayList<String> resFor2 = getStairPathsFor2Step(n-j); System.out.println(resFor2); for(int i=0;i<resFor2.size();i++) { String for1 = resFor2.get(i); if((n-j-i) > 1) { for1 += '1'; } else { for1 += '2'; } finalResFor2.add(for1); } } return finalResFor2; } public static ArrayList<String> getStairPaths(int n) { if(n <= 1) { ArrayList<String> baseResult = new ArrayList<>(); baseResult.add("1"); return baseResult; } ArrayList<String> finalResult = new ArrayList<>(); ArrayList<String> faithResult_for1 = getStairPathsFor1Step(n); for(int i=0;i<faithResult_for1.size();i++) { String for1 = faithResult_for1.get(i); finalResult.add(for1); } ArrayList<String> faithResult_for2 = getStairPathsFor2Step(n); for(int i=0;i<faithResult_for2.size();i++) { String for2 = faithResult_for2.get(i); finalResult.add(for2); } /*System.out.println("finalResult after for loop2"); System.out.println(finalResult); ArrayList<String> faithResult_for3 = getStairPaths(n-3); for(int i=0;i<faithResult_for3.size();i++) { String for3 = faithResult_for3.get(i); finalResult.add(for3); } System.out.println("finalResult after for loop3"); System.out.println(finalResult);*/ return finalResult; } }
Editor is loading...