моя матрица
0 1 2 3 4
5 6 7 8 9
10 11 12 12 14
15 16 17 18 19
Я хочу распечатать
4
3 9
2 8 14
1 7 12 19
0 6 12 18
5 11 17
10 16
15
Заранее спасибо. этот код проверяет другие диагонали
текущий код:
int rows = 5;
int cols = 8;
int maxSum = rows + cols - 2;
for (int sum = 0; sum <= maxSum; sum++) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (i + j - sum == 0) {
// work is done here
}
}
}
}
Я пробовал много, но другие диагонали не проверяются.
Простую логику, о которой я мог думать, это использование двух типов циклов. Сначала в обратном направлении и вперёд в прямом направлении. Я не очень уверен, что это работает для всех случаев, но вы могли бы следовать чему-то вроде этого
public class MatrixDiagonal {
public static void main(String[] args) {
int m = 4, n = 5;
int[][] matrix = { { 0, 1, 2, 3, 4 },
{ 5, 6, 7, 8, 9 },
{ 10, 11, 12, 12, 14 },
{ 15, 16, 17, 18, 19 } };
for(int j=n-1; j>=0; j--){
for(int k=0; k<m; k++){
if((j + k) < n){
System.out.print(matrix[k][j + k] + " ");
} else {
break;
}
}
System.out.println();
}
for(int i=1; i<m; i++){
for(int j=i, k=0; j<m && k<n; j++, k++){
System.out.print(matrix[j][k] + " ");
}
System.out.println();
}
}
}