Страница 1 из 1

Задача на Pascal'е. Про матрицу...

Добавлено: 27 мар 2008, 09:48
creble
Помогите решить задачу, не могу придумать алгоритм :(

Дана целочисленная квадратная матрица. Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы (оформить в виде процедуры).

Эта задача уже решалась на форуме, но на С, а я до него еще не дорос :)

Re: Задача на Pascal'е. Про матрицу...

Добавлено: 27 мар 2008, 11:44
Хыиуду
Для квадратной матрицы размера N элементы A[i,j] будут лежать на побочной диагонали, если i+j=const. Для каждой диагонали эта константа своя, она изменяется в пределах от 2 до 2N. При переборе нужно исключать константу N+1, потому что это сама побочная диагональ, а не параллельная ей.
Тупейший вариант выглядит так:

Код: Выделить всё

var i,j,cns: integer; sums: array[2..2*N] of integer;
begin
  for cns:=2 to 2*N do
  begin
     if cns=N+1 then continue;
     for i:=1 to N do
     for j:=1 to N do
        if i+j=cns then inc(sums[cns],abs(A[i,j])
  end;
end;
После этого найти минимум в массиве sums. Это неоптимальный алгоритм, есть лучше.

Re: Задача на Pascal'е. Про матрицу...

Добавлено: 27 мар 2008, 12:10
creble
Большое спасибо! Я не заметил саму очевидность, что i+j=const :) буду пробовать.