Cet article décrit la méthode d'implémentation des numéros de bouclage de sortie (matrice en spirale) en Java. Partagez-le pour votre référence, comme suit:
Je l'ai déjà vu, mais je ne l'ai pas fait; Je vous ai vu au revoir au forum ce jour-là, et l'inspiration est venue. C'est tellement incroyable
La complexité semble être o (n)
Enregistrer
Demo de package; classe publique snaKEMatrixDemo {public static void main (String [] args) {int m = 5; / * row * / int n = 5; / * colonne * / int [] [] pos = new int [m] [n]; / * position * / / ** * La structure de position est la suivante: [0] [0], [0] [1], [0] [1], [0] [2], [0] [3], [0] [4] * * [1] [0], [1] [1], [1] [2], [1] [3], [1] [4] * * [2] [0], [2] [1], [2] [2] [3], [2] [4] * * * [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: indice de ligne C: indice de colonne pos [r] [c] correspond aux positions ci-dessus * / / * attribuer la direction, d'abord C ++, puis en bas r ++, puis à gauche c--, puis up r-- * / final int up = 1; Final int down = -1; Final int Left = 2; final int droit = -2; int dir = droit; / * Démarrer la direction * / int cir = 1; / * combien de tours d'affectation * / while (count <m * n) {count ++; pos [r] [c] = count; / * affectation * / switch (dir) {case droite: if (c <n - cir) {/ * Il n'y a toujours pas d'attribution sur le côté droit de la ligne actuelle * / c ++; } else {dir = down; r ++; } casser; Case Down: if (r <m - Cir) {/ * Il n'y a toujours pas d'attribution sous la colonne actuelle * / r ++; } else {dir = Left; C--; } casser; Case gauche: if (c> cir - 1) {/ * Il n'y a toujours pas d'attribution sur le côté gauche de la ligne actuelle * / c--; } else {dir = up; r--; } casser; case up: if (r> cir) {/ * il n'y a pas d'attribution dans la colonne actuelle * / r--; } else {Cir ++; / * attribuez un cercle * / dir = droit; C ++; } casser; }} System.out.println ("Résultat du test Wulin.com:"); / * Output * / for (int i = 0; i <m; i ++) {for (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 (); }}}Résultats en cours:
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.