Найти размер матрицы из одномерного массива для get () - PullRequest
0 голосов
/ 23 октября 2019

У меня есть матрица, которая имеет форму S и имеет размер не менее 5 * 5. Он представлен в одномерном массиве путем помещения первой строки, затем средней строки, затем последней строки и, наконец, чисел в первом и последнем столбце.

В качестве примера приведена следующая матрица:

1  2  3  4  5
6  0  0  0  0
7  8  9  10 11 
0  0  0  0  12
13 14 15 16 17

будет представлено в этом массиве:

[1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,6,12]

Дело в том, что я хочу написать функцию get (i, j), которая получает правильное число из одномерного массива,например, get (1,0) даст мне 6. И для этого мне нужно знать размер матрицы. Однако я не могу найти способ получить его из одномерного массива.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 23 октября 2019

Мы можем выяснить, какой случай у нас на основе координаты:

if(i == 0) //first row
    return array[j];
else if(i == (size - 1) / 2) //middle row
    return array[size + j];
else if(i == size - 1) //last row
    return array[2 * size + j];
else if(j == 0 && i < (size - 1) / 2) //first column
    return array[3 * size + i - 1);
else if(j == size - 1 && i > (size - 1) / 2) //last column
    return array[3 * size + (size - 3) / 2 + i - (size - 1) / 2];
else
    return 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...