У меня есть очень большой массив большого значения и сохраните его в row-major 1d array
.вычислить сумму значения в прямоугольной области массива
ex:
1 2 3
4 5 6
будет магазин в int* array = {1,2,3,4,5,6};
, что я должен сделать, учитывая row1, row2, column1, column2
, а затем распечатать сумму района, и она запросит caulate другую область много раз.
то, что я думаю о нем сначала использовать вложенный цикл для обхода массива и хранить сумму каждой строки в sum_row
и хранить сумму каждого столбца в sum_column
и хранить суммы И. totalSum
суммарной элементы.
Then totalSum - the row and the columns that surrond it + the elemnts that has been minus twice
.
Но это кажется достаточно быстрым, есть ли какой-либо алгоритм, который может сделать быстрее или некоторые подсказки стиля кодирования, которые могут сделать фактор мало?
Thx заранее.
просто сохраните общее количество каждого столбца и строку в таблице, затем используйте их –
'int * array = {1,2,3,4,5,6};' не является «прямоугольным»/двумерным массивом. – flyingOwl
он просит распечатать прямоугольную область массива rowmajor –