Pascal. Матрицы

Ответить
Tre
Сообщения: 27
Зарегистрирован: 07 янв 2007, 23:26

Помогите решить задачку! Мне нужен алгоритм решения вот такой задачи: нужно найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали у квадратной матрицы.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

Tre,
Ты алгорим как счиать знаешь?
Если да и не знаешь как реализовать на паскале, то дай посмотрю что можно сделать.

Мне ж книги надо поднимать чтоб вспомнить
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Tre
Сообщения: 27
Зарегистрирован: 07 янв 2007, 23:26

Лелик писал(а):Tre,
Ты алгорим как счиать знаешь?
Если да и не знаешь как реализовать на паскале, то дай посмотрю что можно сделать.

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

Элементы, лежащие на диагоналях, параллельных побочной:
mas[i,alpha-i]
Для каждой диагонали эта alpha своя. Изменяется в пределах от 0 или 1 до удвоенной ширины матрицы. Для каждого элемента - проверка, принадлежит ли он вообще матрице.
Решение дважды неоптимальное, зато простое
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

Держи,

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

CONST
  N = 10;
  cMaxWord=1000;
TYPE
  TMatr = array [1..N,1..N] of word;
VAR
  MyMatr : TMatr;
  MaxSum : longint;
  Sum    : longint;
  i,j    : byte;
BEGIN
  randomize;
  for i:=1 to N do
    for j:=1 to N do
      MyMatr[i][j]:=random(cMaxWord);
  {idem do diagonali:}
  MaxSum:=0;
  for i:=1 to N-1 do {N-1 - samu diagonal propuskaem}
    begin
      Sum:=0;
      for j:=1 to i do Sum:=Sum+MyMatr[j,i-j+1];
      if Sum>MaxSum then MaxSum:=Sum
    end;
  {idem posle diagonali:}
  for i:=2 to N do {2 - samu diagonal propuskaem}
    begin
      Sum:=0;
      for j:=i to N do Sum:=Sum+MyMatr[j,N-j+i];
      if Sum>MaxSum then MaxSum:=Sum
    end;
  writeln('Maximum = ',MaxSum);
  readln
END.
Ответить