Pascal. Матрицы
Помогите решить задачку! Мне нужен алгоритм решения вот такой задачи: нужно найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали у квадратной матрицы.
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
Tre,
Ты алгорим как счиать знаешь?
Если да и не знаешь как реализовать на паскале, то дай посмотрю что можно сделать.
Мне ж книги надо поднимать чтоб вспомнить
Ты алгорим как счиать знаешь?
Если да и не знаешь как реализовать на паскале, то дай посмотрю что можно сделать.
Мне ж книги надо поднимать чтоб вспомнить
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Реализовать-то я и сам могу, мне надо сам алгоритм решения! Можешь помочь?Лелик писал(а):Tre,
Ты алгорим как счиать знаешь?
Если да и не знаешь как реализовать на паскале, то дай посмотрю что можно сделать.
Мне ж книги надо поднимать чтоб вспомнить
Элементы, лежащие на диагоналях, параллельных побочной:
mas[i,alpha-i]
Для каждой диагонали эта alpha своя. Изменяется в пределах от 0 или 1 до удвоенной ширины матрицы. Для каждого элемента - проверка, принадлежит ли он вообще матрице.
Решение дважды неоптимальное, зато простое
mas[i,alpha-i]
Для каждой диагонали эта alpha своя. Изменяется в пределах от 0 или 1 до удвоенной ширины матрицы. Для каждого элемента - проверка, принадлежит ли он вообще матрице.
Решение дважды неоптимальное, зато простое
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Держи,
Код: Выделить всё
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.