Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 매트릭스의 지그재그(또는 대각선) 순회

<시간/>

이 문제에서는 2차원 행렬이 주어집니다. 우리의 임무는 행렬의 모든 요소를 ​​대각선 순서로 인쇄하는 것입니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

1 2 34 5 67 8 9

출력 -

14 27 5 38 69

매트릭스를 지그재그 형태나 대각선 형태로 인쇄할 때 따라가는 패턴을 봅시다.

C++에서 매트릭스의 지그재그(또는 대각선) 순회

이것이 대각선 순회가 작동하는 방식입니다.

출력의 줄 수는 항상 2D 행렬의 행과 열에 따라 다릅니다.

2D 행렬 mat[r][c]의 경우 r+c-1 출력 라인이 됩니다.

예시

이제 프로그램에 대한 솔루션을 살펴보겠습니다.

#include namespace std;#define R 5#define C 4int min2(int a, int b){ return (a  b)? 에이:ㄴ; } 무효 printDiagonalMatrix(int ​​matrix[][C]){ for (int line=1; line<=(R + C -1); line++){ int start_col =max(0, line-R); 정수 개수 =min3(줄, (C-start_col), R); for (int j=0; j 

출력

행렬은 다음과 같습니다. 1 2 3 45 6 7 89 10 11 1213 14 15 1617 18 19 20행렬의 지그재그(대각선) 순회는 다음과 같습니다. 15 29 6 313 10 7 417 18 14 11