Java :: Aufgabe #84 :: Lösung #2

1 Lösung Lösung öffentlich
#84

Das ist das Haus vom Nikolaus

Anfänger - Java von eulerscheZhl - 12.03.2015 um 10:20 Uhr
Schreibe ein Programm, das alle Lösungen des Haus vom Nikolaus findet.
#2
vote_ok
von ElPapito (2690 Punkte) - 07.05.2015 um 21:54 Uhr
Quellcode ausblenden Java-Code
/**
 * @author ElPapito
 * @date 07.05.2015
 */

import java.util.ArrayList;

public class DasIstDasHausVomNikolaus {

	public static void main(String[] args) {
		ArrayList<Edge> edges = new ArrayList<Edge>();
		edges.add(new Edge(1, 2));
		edges.add(new Edge(1, 3));
		edges.add(new Edge(1, 4));
		edges.add(new Edge(2, 3));
		edges.add(new Edge(2, 4));
		edges.add(new Edge(3, 4));
		edges.add(new Edge(3, 5));
		edges.add(new Edge(4, 5));

		for (int i = 1; i <= 5; i++) {
			printSolutions(edges, i, "");
		}
	}

	private static void printSolutions(ArrayList<Edge> edges, int node,
			String path) {
		if (edges.isEmpty()) {
			System.out.println(path + node);
			return;
		}

		for (int i = 0; i < edges.size(); i++) {
			Edge edge = edges.get(i);
			if (edge.contains(node)) {
				int newNode = edge.getOther(node);
				edges.remove(edge);
				printSolutions(edges, newNode, path + node + "-");
				edges.add(i, edge);
			}
		}
	}

}

class Edge {
	private int point1;
	private int point2;

	public Edge(int p1, int p2) {
		point1 = p1;
		point2 = p2;
	}

	public boolean contains(int node) {
		return point1 == node || point2 == node;
	}

	public int getOther(int node) {
		if (point1 == node) {
			return point2;
		} else if (point2 == node) {
			return point1;
		} else {
			return -1;
		}
	}

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2117031

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.