Einzelnen Beitrag anzeigen
Alt 25.06.08, 22:08   #16 (permalink)
Ook!
 
Registriert seit: 21.04.08
Ook! Leistung: Facit NTK
Likes: 0
Standard

Meine Java Lösung mit Rekursion
Kern ist die doIt Methode.

Code:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class StairsClimbing {

	public static void main(String[] args) {
		Solver sv = new StairsClimbing().new Solver(4);
		System.out.println("Anzahl Möglichkeiten: "+ sv.getSolutionCount());
		System.out.println("Lösungen: "+ sv.getSolutions());
	}

	class Solver {

		private List<String> solutions = null;

		public Solver(int stairsCount) {
			this.solutions = new ArrayList<String>();
			this.doIt(stairsCount, prepareString(stairsCount));
		}

		private String prepareString(int stairsCount) {
			char[] array = new char[stairsCount];
			Arrays.fill(array, '1');
			return String.valueOf(array);
		}

		private void doIt(int pos, String stairs) {
			for(int i=pos; i>1; i--)
				doIt(i-2, stairs.substring(0,i-2) +"2"+ stairs.substring(i));
			solutions.add(stairs);
		}

		public String getSolutions() {
			Collections.reverse(solutions);
			String resultString = Arrays.toString(solutions.toArray());
			return resultString.substring(1, resultString.length()-1);
		}
		
		public int getSolutionCount() {
			return solutions.size();
		}

	}

}
Die Ausgabe für die Stufenanzahl 4 sieht dann so aus:
Code:
Anzahl Möglichkeiten: 5
Lösungen: 1111, 211, 121, 112, 22
Ook! ist offline   Mit Zitat antworten
 

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