Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
ВнизВычисления Найти похожие ветки
← →
q10nik (2006-12-06 15:52) [0]Есть двумерный массив МхN как вычислить
сумму каждого элемента массива с остальными
кроме тех, с какими он находится в одном столбце
результаты сохранить в динамическом массиве
ЗЫ:матрица меняет свой размер, столбцы:m
строки:n
________________________
| | Р | | | | | | |
|__|__|__|__|__|__|__|__|
| | Х| | | | | | |
|__|__|__|__|__|__|_ _|__|
| | Х| | | | | | |
|__|__|__|__|__|__|__|__|
| | Х| | | | | | |
|__|__|__|__|__|__|__|__|
| | Х| | | | | | |
|__|__|__|__|__|__|__|__|
| | Х| | | | | | |
|__|__|__|__|__|__|__|__|
делаю так, но правильно ли??
И можно ли это делать быстрее
var
r:array of real;
i,i1,j,j1,k,m,n:cardinal;
begin
SetLength(r,m*n);
k:=0;
For i:=1 to m do
For j:=1 to n do
begin
Sum:=0;
for i1:=1 to m do
begin
if i1<>i then
for j1:=1 to n do
sum:=sum+matr[i1,j1];
end;
r[k]:=sum;
Inc(k);
end;
end;
← →
MBo © (2006-12-06 15:57) [1]один раз посчитать суммы для каждого столбца и для всей матрицы, далее простой арифметикой получить нужный результат
← →
novill © (2006-12-06 16:04) [2]> И можно ли это делать быстрее
Можно.
1.Для этого один раз посчитай суммы по столбцам, а потом работай уже с ними.
2.Можно еще чуть ускорить, если посчитать для каждого столбца сумму всех столбцов, кроме текущего. тогда
циклfor i1:=1 to m do
begin
if i1<>i then
for j1:=1 to n do
sum:=sum+matr[i1,j1];
end;
превратится в одно сложение.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c