#0
by iceman2112
Есть матрица NxN. Нужно сосчитать суммы всех матриц MxM (M меньше N) внутри это исходной матрицы. Причем порядок алгоритма О(N*N). Пока придумал только так: 1) Считаем суммы по столбикам и строкам всех элементов исходной матрицы и запоминаем это в полученный результат в матрицу S. (порядок NxN) 2)Считаем сумму первой матрицы, которая находится в (0,0) (порядок M) 3) Считаем суммы других матриц через предыдущие суммы и сумма столбиков и столбцов (порядок MxM) Вроде все правильно, но громоздко и не прозрачно. Может быть есть идеи более изящного алгоритма? P.S. могу подробнее описать
#7
by NS
в смысле не понял? Дерево фенвика именно для твоей задачи и придумано. Конкретно для твоего случая есть статья на хабре.
#10
by iceman2112
читаю Задание "слово в слово": Дан квадратный массив N*N и число M. Для каждого квадрата M*M (M < N) в этом массиве вычислить сумму его элементов. Общее число действий порядка N*N
#14
by iceman2112
ты говоришь, что N^3, но я же привел алгоритм N^2. Просто задание простое должно быть, и хочется изящный алгоритм
#17
by NS
в у тебя написано посчитать сумму элементов для всех квадратных матриц, а в сумму элементов квадратных матриц при заданном М.
#22
by NS
Вычислим суммы элементов матриц размера MxM верхнего ряда матрицы NxN. На это потребуется N*M операций. (чтоб посчитать сумму элементов матрицы образованной сдвигом на один элемент влево - нужно прибависть сумму одного ряда, и отнять сумму одного ряда от предыдущей матрицы) Вычислим так-же суммы элементов матриц MxM левого ряда матрицы NxN. А далее, так как сумма элементов матрицы с верхним левым углом в элементе S(а,b) равна S(a-1,b)+S(a,b-1)-S(a-1,b-1)+N(a+M-1,b+M-1)+N(a-1,b-1)-N(a-1,b+M-1)-N(a+M-1,b-1), то по-очереди можем посчитать сумму элементов всех матриц размера MxM. N(a,b) - значение элемента [a,b] в начальной матрице. S(a,b) - сумма элементов в матрице MxM с началом (левым верхним углом) в элементе [a,b]
#23
by iceman2112
Спасибо, я мыслил так, но что то в этом направлении не получилось. Мб еще скину потом там посложнее задачка
#25
by Classic
Попробуй прежде чем считать подвести нормальную матбазу. Например в скольких матрицах присутсвует число с позиции (1,1) или число с позиции (b,b) Это если я правильно задачу понял
#26
by Classic
Тогда за один обход исходя из количества матриц для данной позиции можно высчитать суммы всех матриц
#28
by NS
Можно еще раз? Ты предлагаешь обойти все элементы начального массива, и приссумировать каждый ко всем матрицам в которых он присутствует? Поздравляю! Ты решил за O(N^2*M^2) задачу которая легко решается за O(N^2)
#29
by Classic
Сумма = 0; Для Сч = 1 По N Цикл Для Сч = 1 По N Цикл Сумма = Сумма + А[Сч,Сч] * В(Сч,Сч); КонецЦикла; КонецЦикла; Где В(Сч1, Сч2) - в скольких матрицах встречается элемент А[Сч1;Сч2] Осталось только определить функцию В - это легко
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- База управление торговлей 11.1.2.6 вылетает сразу после запуска
- разделение видео сигнала на 4 и более мониторов
- Рисунок, обводка. Каким образом ?
- Недопустимое значение параметра (параметр номер '1')
- Word. Метод PrintOut()...
- Почему может быть не видно внешней добавленной формы? В уТ11
- СКД + колонка после итогов
- Отражение изменения назначения платежа
- СКД как не выводить строки если нет вложенных уровней?
- КонтекстЭДО
- внешняя обработка модуль объекта. директива на сервере. 81
- как сохранить табличный документ в excel без екселя и на сервере ? 8.1
- IT-Решение: Консоль изучения языка запросов 1С
- Как контролировать превышение закупочных цен в Управление торговлей 10.3
- УТ 11 "Занят порт" при подключении фискального регистратора
- УТ 11 Остатки накопленных сумм по картам лояльности
- 1с8: Продублировать выгрузку объектов узла в РИБ за период
- Как внутри запроса выбрать номенклатуру из ТЧ документа и передать вирт.таблице?
- Перенос определенных строк в табличную часть из другого документа
- Автоматическое планирование маршрутов доставки в УТ 10.3