Die Aufgabe besteht darin, eine n x n-Matrix diagonaler Muster zu drucken.
Wenn n 3 ist, dann drucken Sie eine diagonale Mustermatrix wie folgt aus:
Die Ausgabe lautet also:
Input: 3 Output: 1 2 4 3 5 7 6 8 9 Input: 4 Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16
Die Frage legt nahe, dass wir eine Zahl n erhalten und ein n x n generieren Matrix, dann müssen wir die Matrix in einem diagonalen Muster durchlaufen und die Werte in einer separaten Matrix speichern.
Aber dies wird die Komplexität unseres Codes erhöhen, also werden wir −
eine Matrix der Größe N X N erstellen, die das Muster vor dem Drucken speichert.
Elemente im oberen Dreieck des Musters speichern. Beachten Sie, dass beim Abwärtsbewegen der Diagonale der Zeilenindex um 1 zunimmt und der Spaltenindex um 1 abnimmt.
Speichern Sie nach Fertigstellung des oberen Dreiecks die Elemente des unteren Dreiecks auf ähnliche Weise wie im oberen Dreieck, d. h. wenn Sie sich entlang der Diagonale nach unten bewegen, erhöht sich der Zeilenindex um 1 und der Spaltenindex um 1. Die chinesische Übersetzung von
int printdiagonal(int n) START STEP 1: DECLARE int mat[n][n], i, j, k, d=1, m STEP 2: LOOP FOR i = 0 AND i < n AND i++ ASSIGN j AS i AND k AS 0 LOOP FOR j = I AND j >= 0 AND j-- ASSIGN mat[k][j] AS d INCREMENT d AND k BY 1 END LOOP END LOOP STEP 3: LOOP FOR k = 1 AND k < n AND k++ ASSIGN i AND m EQUALS TO k LOOP FOR j = n-1 AND j >= m AND j-- ASSIGN mat[i][j] AS d; INCREMENT d AND i WITH 1 END FOR END FOR STEP 4: LOOP FOR i = 0 AND i < n AND i++ LOOP FOR j = 0 AND j < n AND j++ PRINT mat[i][j] END FOR PRINT NEWLINE END FOR STOP
#include <stdio.h> int printdiagonal(int n){ int mat[n][n], i, j, k, d=1, m; for ( i = 0; i < n; i++){ j = i; k = 0; for ( j = i; j >= 0; j--){ mat[k][j] = d; d++; k++; } } for ( k = 1; k < n; k++){ i = m = k; for ( j = n-1; j >= m; j--){ mat[i][j] = d; d++; i++; } } for ( i = 0; i < n; i++){ for(j = 0; j < n; j++){ printf("%d ", mat[i][j] ); } printf("</p><p>"); } } int main(int argc, char const *argv[]){ int n = 3; printdiagonal(n); return 0; }
Wenn wir das obige Programm ausführen, generiert es die folgende Ausgabe:
1 2 4 3 5 7 6 8 9
Das obige ist der detaillierte Inhalt vonDrucken Sie im C-Programm Zahlen im Matrixdiagonalmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!