Ich habe Probleme mit meiner Aufgabe und benötige Hilfe.C - spiralförmige Traversierung des 2D-Arrays nach außen (von der Mitte ausgehend) und im Uhrzeigersinn
Das Programm, das ich code muss durchlaufen (genauer - füllen mit natürlichen Zahlen von 1 bis N^2, aber der Traversalgorithmus ist, was ich mit kämpfen) ein 2D-Array A [N] [N], wo N ist ungerade (1,3,5,7 ...), ausgehend von der Mitte (A [N/2] [N/2]) und bewegt sich spiralförmig und im Uhrzeigersinn.
Beispiel (N = 5):
25 10 11 12 13
24 9 2 3 14
23 8 1 4 15
22 7 6 5 16
21 20 19 18 17
Ich sehe das Muster: center = 1; 1xUP, 1xRIGHT, 2xDOWN, 2xLEFT, 3xUP, 3XRIGHT usw.
Wie kann ich diesen Algorithmus mit Schleifen implementieren? Die Zeit tickt und ich stecke hier ...
Wir freuen uns, einige Vorschläge zu lesen und Hilfe zu erhalten.
Vielen Dank!
Ja, ich habe das gesehen, aber wie soll ich den Code bearbeiten, so dass er von der Mitte ausgeht, vertikal nach OBEN geht und dann spiralförmig und im Uhrzeigersinn weitergeht? Das ist der Kampf. EDIT: Ich habe auch einen Code für Spirale und im Uhrzeigersinn Traversal, beginnend mit Indizes [0] [0] (der Anfang der Matrix). Ich arbeite gerade daran, so dass es von innen nach außen geht. Ich kann diesen Code hier einfügen und wenn möglich: gib mir Tipps, wie ich es überarbeiten kann. – Waterfalse
Sie können dafür auch den quadratischen Kern verwenden (statt zirkulär 'cos, sin') siehe [Drehen Sie eine diagonale Linie in einem 2D 3 x 3 Gitter - Rotationsmatrix benötigt?] (Http://stackoverflow.com/a/40355825/ 2521214) Also einfach Quadrate von der Mitte zum äußeren Rand der Matrix ... ähnlich dem Rendern konzentrischer Kreise – Spektre