이 문제에서는 2차원 행렬이 주어집니다. 우리의 임무는 행렬의 모든 요소를 대각선 순서로 인쇄하는 것입니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
1 2 34 5 67 8 9
출력 -
14 27 5 38 69
매트릭스를 지그재그 형태나 대각선 형태로 인쇄할 때 따라가는 패턴을 봅시다.
이것이 대각선 순회가 작동하는 방식입니다.
출력의 줄 수는 항상 2D 행렬의 행과 열에 따라 다릅니다.
2D 행렬 mat[r][c]의 경우 r+c-1 출력 라인이 됩니다.
예시
이제 프로그램에 대한 솔루션을 살펴보겠습니다.
#includenamespace 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