[Java-Zweig] Kombinationen auflisten

Aufzählung von Kombinationen

Such Ich werde einen Artikel schreiben, da sowohl Kombinationen als auch Bestellungen nachgefragt werden müssen. In unserem Unternehmen wird dieser kleine Code für Produkte verwendet, die mehrere Finanzprodukte kombinieren, um ein Portfolio zu erstellen, und dann das mit guten Eigenschaften auswählen. Das Funktionsprinzip ist fast das gleiche wie oben.

Combination.java


	private enum Operation {add, remove};
	private static<T> Set<T> apply(Set<T> src, Operation operation, T item) {
		Set<T> result = new HashSet<T>(src);
		if (Operation.add == operation) result.add(item);
		if (Operation.remove == operation) result.remove(item);
		return result;
	}
	
	private static<T> Set<Set<T>> _combination(Set<T> selected, int depth, Set<T> pool) {
		if (depth == 0) return apply(new HashSet<>(), Operation.add, selected); //Gibt die Menge zurück, die nur die ausgewählten im Element haben
		Set<Set<T>> result = new HashSet<Set<T>>();
		for (T item : pool) {
			result.addAll(
					_combination(
							apply(selected, Operation.add, item), //Ändern Sie das Element in ausgewählt
							depth - 1, 
							apply(pool, Operation.remove, item)  //Aus dem Pool nehmen
					)
			);
		}
		return result;
	}
	public static<T> Set<Set<T>> combination(Set<T> src, int k) {return _combination(new HashSet<T>(), k, src);}

Wie benutzt man

So was.

Main.java


	public static void main(String[] args) {

		Set<Integer> src = new HashSet<Integer>() {{
				add(0); add(1); add(2); add(3); add(4); add(5);
		}};
		
		System.out.println(combination(src, 2)); //Listen Sie alle Sätze auf, die durch Extrahieren von zwei aus den obigen Sätzen erhalten wurden
		
	}

Recommended Posts

[Java-Zweig] Kombinationen auflisten
Implementieren Sie eine Kombination aus Mathematik in Java
Aufzählung aller Kombinationen Java
Java
Java