Alle Zahlen ohne doppelte - 1234 bis 4321
-
Hi
Ich habe für meine Mutter ein art magisches Quadrat am PC lösen wollen und dazu alle Zahlen von 1-9 in allen möglichen Kombinationen gebraucht, ohne das eine Ziffer doppelt vorkommt.
Gelöst habe ich das ganze recht aufwendig:
for( int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ if(i==j) continue; for(int k = 0; k < 10; k++){ if(k==j||k==i) continue; usw.Das wird aber bei 9 verschiedenen Zahlen ziemlich hässlich.
Eine Alternative ist mir noch eingefallen, "einfach" eine Schleife von 0 bis 999999999 laufen lassen und ueberprüfen ob eine Ziffer doppelt vorkommt, aber wirklich schön finde ich auch das nicht, für 9 stellige Zahlen ist das aber durchaus noch machbar.
Hat jemand eine Idee wie das schöner gehen könnte?
Danke schonmal
Gruss
-
Da dürfte was mit Backtracking gehen:
http://en.wikipedia.org/wiki/Backtracking
-
Gehts dir erstmal nur um die Permutationen von [1, 2, 3, 4, 5, 6, 7, 8, 9]? Siehe std::next_permutation.
Edit: Für das Lösen deines Problems solltest du dich dann allerdings an SeppJs Vorschlag halten.