Я хочу пройти по квадратному 2D-массиву, который я преобразовал в 1D.
Проблема в том, что я хочу пройти по нему, как если бы я проходил исходное 2D по диагонали.
Массив диагональный, и я изначально создал его с помощью malloc в 1D, чтобы не выделять слишком много памяти.
Размер массива:
int Tsize = N*(N+1)/2; //table size -> diagonal array of (N+1)*N/2 elements
int* table = malloc(Tsize*sizeof(int));
Я знаю, что таким образом вы проходите сглаженный 2D-массив.
do{
i = row*N + col;
col++;
if (col>N-1){
col = 0;
row++;
}
printf("%d ", x[i]);
} while( row < N);
И вот то, что я нашел для обхода массива диагональными полосами.
Для этого массива:
int x[3][3] = {1, 2, 3,
ø, 4, 5,
ø, ø, 6};
ø: я не буду использовать этот элемент.
Я создаю этот массив:
int k[6] = {1,2,3,4,5,6};
и я хочу пройти его так:
1,4,6,2,5,3
Можете ли вы предложить что-нибудь? Я застрял.