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

Ответить
creble
Сообщения: 4
Зарегистрирован: 27 мар 2008, 09:28

Помогите решить задачу, не могу придумать алгоритм :(

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

Эта задача уже решалась на форуме, но на С, а я до него еще не дорос :)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Для квадратной матрицы размера 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. Это неоптимальный алгоритм, есть лучше.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
creble
Сообщения: 4
Зарегистрирован: 27 мар 2008, 09:28

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