Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Wie kann ich in Java Permutationen darstellen? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Wie kann ich in Java Permutationen darstellen?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Wie kann ich in Java Permutationen darstellen? Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo, ich habe eine Anzahl von Worten, bspw. "Matse", "Milch", "Nett", "Ungarn" und ich möchte sämtliche Permutationen dieser Worte ausgeben. Wie mache ich das?
16.06.2016 10:02 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
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:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Set;

public class Main {
	static void permut(String[] words) {
		//zählen, welches Wort wie oft vorkommt
		HashMap<String, Integer> dict = new HashMap<String, Integer>();
		for (String word : words) {
			if (!dict.containsKey(word)) {
				dict.put(word, 0);
			}
			dict.put(word, dict.get(word) + 1);
		}
		//Permutationen bilden
		permutRecurs(dict, dict.keySet(), 0, new String[words.length]);
	}

	static void permutRecurs(HashMap<String, Integer> wordCount, Set<String> keys, int index, String[] sequence) {
		//Alle Wörter verwendet?
		if (index == sequence.length) {
			System.out.println(Arrays.toString(sequence));
		}
		for (String word : keys) {
			//noch ein Wort übrig?
			if (wordCount.get(word) > 0) {
				wordCount.put(word, wordCount.get(word) - 1); //Wort als verwendet markieren
				sequence[index] = word; //und Position des Wortes speichern
				permutRecurs(wordCount, keys, index + 1, sequence); //rekursiver Aufruf
				wordCount.put(word, wordCount.get(word) + 1); //nach der Rekursion Wort wieder zur Verwendung freigeben
			}
		}
	}

	public static void main(String[] args) {
		permut(new String[] { "Matse", "Milch", "Nett", "Ungarn", "Matse", "Milch", "Nett", "Ungarn" });
	}
}


__________________
Syntax Highlighting fürs Board (Link)
16.06.2016 10:13 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » Wie kann ich in Java Permutationen darstellen?