У меня есть такая матрица:
{
{4,5,6,7,8},
{2,3,1,4},
{1,2},
{1,2,3,4,5}
{5,6,7,8}
}
Я хочу напечатать это по спирали, поэтому на выходе должно быть: 4 5 6 7 8 4 2 5 8 7 6 5 1 1 1 3 1 4 3 2
Код, который у меня сейчас есть для спирали Матрица выглядит так:
void spiral(int a[][]) {
int i, k = 0, l = 0, m = a.length, n = a[0].length;
while (k < m && l < n) {
for (i = l; i < n; ++i) {
System.out.print(a[k][i] + " ");
}
k++;
for (i = k; i < m; ++i) {
System.out.print(a[i][n - 1] + " ");
}
n--;
if (k < m) {
for (i = n - 1; i >= l; --i) {
System.out.print(a[m - 1][i] + " ");
}
m--;
}
if (l < n) {
for (i = m - 1; i >= k; --i) {
System.out.print(a[i][l] + " ");
}
l++;
}
}
Проблема в том, что я не могу понять, как заставить ее работать для строк с неравной длиной массива. Я был бы очень признателен за любую помощь и понимание в этом.