Heim  >  Artikel  >  Backend-Entwicklung  >  Drucken Sie im C-Programm Zahlen im Matrixdiagonalmuster

Drucken Sie im C-Programm Zahlen im Matrixdiagonalmuster

王林
王林nach vorne
2023-09-14 18:25:06558Durchsuche

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:

Drucken Sie im C-Programm Zahlen im Matrixdiagonalmuster

Die Ausgabe lautet also:

Drucken Sie im C-Programm Zahlen im Matrixdiagonalmuster

Beispiel

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

Algorithmus

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

Beispiel

lautet:

Beispiel

#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;
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen