Dieser Artikel beschreibt die Methode zur Implementierung von Ausgangsloopback -Nummern (Spiralmatrix) in Java. Teilen Sie es für Ihre Referenz wie folgt weiter:
Ich habe es schon einmal gesehen, aber ich habe es nicht geschafft. Ich habe dich an diesem Tag vom Forum verabschiedet, und die Inspiration kam. Es ist so erstaunlich
Die Komplexität scheint o (n) zu sein
Speichern Sie es
Paket Demo; öffentliche Klasse SnakematrixDemo {public static void main (String [] args) {int m = 5;/* row*/int n = 5;/* Spalte*/int [] [] pos = new int [m] [n];/* Position*/*** Die Positionsstruktur ist wie folgt: wie folgt: [0] [0], [0] [1], [0] [1], [0] [2], [0] [3], [0] [4] * [1] [0], [1] [1], [1] [2], [1] [3], [1] [4] * [2] [2], [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [2] [3] [0], [3] [1], [3] [2], [3] [3] [4] * * [4] [0], [4] [1], [4] [2], [4] [3], [4] [4] */ int Count = 0; int r = 0, c = 0;/* r: Zeilen-Abschluss C: Spalten-Sumbschnitt POS [r] [c] entspricht den obigen Positionen*//* Die Richtung zuerst, zuerst C ++, dann R ++, dann links c--, dann up r-*/ endgültig int up = 1; endgültig int down = -1; endgültig int links = 2; endgültig int rechts = -2; int dir = rechts;/* Startrichtung*/ int cir = 1;/* Wie viele Zuweisungsrunden*/ while (count <m* n) {count ++; pos [r] [c] = count;/* Zuweisung*/ Switch (dir) {case rechts: if (c <n - cir) {/* Es gibt immer noch keine Zuordnung auf der rechten Seite der aktuellen Zeile*/ c ++; } else {dir = down; r ++; } brechen; Fall Down: if (r <m - cir) {/* Es gibt immer noch keine Zuordnung unter der aktuellen Spalte*/ r ++; } else {dir = links; C--; } brechen; Fall links: if (c> cir-1) {/* Es gibt immer noch keine Zuordnung auf der linken Seite der aktuellen Linie*/ c--; } else {dir = up; R--; } brechen; Fall UP: if (r> cir) {/* Es gibt keine Zuordnung in der aktuellen Spalte*/ r--; } else {cir ++;/* weisen einen Kreis zu*/ dir = rechts; C ++; } brechen; }} System.out.println ("Wulin.com Testergebnis:"); / * Output */ for (int i = 0; i <m; i ++) {für (int j = 0; j <n; j ++) {if (pos [i] [j] <10) {System.out.print (pos [i] [j]+"+" "); } else {System.out.print (pos [i] [j] + ""); }} System.out.println (); }}}Auslaufergebnisse:
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.