ich stehe vor einem kleinen Problem, ich soll ein magisches Quadrat in C++ programmieren mit n Spalten und Zeilen (wobei n = ungerade).
Summe der Spalten = Summe der Zeilen = Summe der Diagonale
Kennt jemand von euch einen Algorithmus der dieses erledigt, oder kann mir jemand vielleicht die Sache langsam erklären wie man dieses Problem angeht. z.B. Erzeugung von 2dim Array(dynamisch)…
Es geht auch OHNE Brute-Force, jedenfalls fuer magische Quadrate mit ungerader Seitenlaenge.
Der Algorithmus ist denkbar einfach:
->Die erste Zahl (also 1) gehoert in die oberste Zeile in die Mitte.
->Dann geht man eine Zeile rauf und eine Spalte nach rechts (wenn man ueber den Rand des magischen Quadrats kommt, dann faengt man einfach wieder auf der anderen Seite an).
->Wenn dieses Feld nicht leer ist, geht man solange zwei Zeilen nach unten und eine Spalte nach rechts, bis man auf ein leeres Feld stoesst.
->In das leere Feld wird dann die naechste Zahl (der Reihe nach, also 1, 2, 3, …) eingefuellt.
Ich weiss nicht, wie das bei Quadraten mit gerader Seitenlaenge funktioniert. Ausserdem weiss ich auch nicht, wieso dieser Algorithmus funktioniert (weiss es jemand?).
es muss heissen
->Wenn dieses Feld nicht leer ist, geht man solange zwei Zeilen nach unten und eine Spalte nach LINKS, bis man auf ein leeres
Feld stoesst.