Maison > Article > développement back-end > Utilisez le programme C pour imprimer une matrice spirale n x n, en utilisant l'espace supplémentaire O(1)
Étant donné un entier positif n, construisez une matrice spirale n x n en utilisant uniquement O (1) espace supplémentaire dans le sens des aiguilles d'une montre
Une matrice spirale est une matrice qui fonctionne comme une spirale, elle partira de l'origine du cercle , tournez dans le sens des aiguilles d’une montre. La tâche consiste donc à imprimer la matrice sous forme de spirale en utilisant l'espace O(1) à partir de 2 → 4 → 6 → 8 → 10 → 12 → 14 → 1 6→ 18.
Ci-dessous l'exemple de matrice spirale -
Input: 3 Output: 9 8 7 2 1 6 3 4 1
Il devient facile de résoudre le code avec un espace infini, mais ce n'est pas aussi efficace que le programme optimal, ou le code est efficace à la fois en mémoire et en temps . Ainsi, pour maintenir l'ordre en spirale, quatre boucles sont utilisées, une chacune pour les coins supérieur, droit, inférieur et gauche de la matrice, mais si nous divisons la matrice en deux parties, les coins supérieur droit et inférieur gauche, nous pouvons directement utiliser ceci concept
pour la moitié supérieure droite,mat[i][j] = (n-2*x)*(n-2*x)-(i-x)-(j-x)
pour la moitié inférieure gauche,
mat[i][j] = (n-2*x-2)*(n-2*x-2) + (i-x) + (j-x)
note-nous écrivons un programme pour l'impression de multiples de matrice de 2
Si nous exécutons le programme ci-dessus, il générera le résultat suivant :
int spiralmatrix(int n) START STEP 1: DECLARE i, j, a, b, x STEP 2: LOOP FOR i = 0 AND i < n AND i++ LOOP FOR j = 0 AND j < n AND j++ FIND THE MINIMUM IN (i<j ) AND ASSIGN IT TO a FIND THE MINIMUM (n-1-i) < (n-1-j) AND ASSIGN IT TO b THEN ASSIGN THE LEAST VALUE FROM a AND b TO x IF i <= j THEN, PRINT THE VALUE OF 2* ((n-2*x)*(n-2*x) - (i-x) - (j-x)) ELSE PRINT THE VALUE OF 2*((n-2*x-2)*(n-2*x2) + (i-x) + (j-x)) END LOOP PRINT NEWLINE END LOOP STOP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!