get stair path
user_4666436
java
3 years ago
2.6 kB
4
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...