Cho với một mảng có kích thước n x n và nhiệm vụ là in các phần tử ma trận kiểu số nguyên theo đường chéo xuống dưới.
Theo đường chéo xuống dưới có nghĩa là in mảng có kích thước bất kỳ là n x n theo đường chéo di chuyển xuống dưới như trong hình bên dưới -
Đầu tiên, nó sẽ in 1 và sau đó chuyển sang in 2 và di chuyển xuống 4 theo đường chéo và in nó, v.v.
Ví dụ
Input: Matrix [3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }} Output: 1 2 4 3 5 7 6 8 9
Thuật toán
int diagonally_down(int mat[n][n]) START STEP 1: DECLARE i, j, row, col AS INT STEP 2: LOOP FOR i = 0 AND i < n AND i++ SET row = 0 SET col = i LOOP WHILE col >= 0 PRINT mat[row][col] INCREMENT row BY 1 AND DECREMENT col BY 1 END WHILE END FOR STEP 3: LOOP FOR j = 1 AND j < n AND j++ SET row = j SET col = n-1 LOOP WHILE row < n PRINT mat[row][col] INCREMENT row BY 1 AND DECREMENT col BY 1 END WHILE END FOR STOP
Ví dụ
#include <stdio.h> #define n 3 int diagonally_down(int mat[n][n]){ int i, j, row, col; //printing above elements for (i = 0; i < n; i++){ row = 0; col = i; while(col >= 0) //Moving downwards from the first row{ printf("%d ", mat[row++][col--]); } } //printing below elements for (j = 1; j < n; j++){ row = j; col = n-1; while(row<n) //Moving from the last column{ printf("%d ", mat[row++][col--]); } } } int main(int argc, char const *argv[]){ int mat[][n] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; diagonally_down(mat); return 0; }
Đầu ra
Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau -
1 2 4 3 5 7 6 8 9