Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача с матрицей

Автор: July 12.04.2007 15:52

Помогите пожалуйста решить задачку!! wub.gif Найти номер строки заданной целочисленной матрицы размером 1010, в которой находит-ся самая длинная последовательность, составленная из одинаковых чисел.

Автор: volvo 12.04.2007 16:13

Чтобы велосипед заново не строить, воспользовался готовой функцией get_chain, которую можно взять здесь:
http://volvo71.narod.ru/faq_folder/matrices.htm#arr_max

Тогда решение выглядит вот так:

const n = 10;
type
vector = array[1 .. n] of integer;
matrix = array[1 .. n] of vector;

{ Для теста - как константа, можно описать переменной и вводить значения самостоятельно }
const
a: matrix = (
(1, 2, 2, 3, 4, 5, 5, 5, 26, 6),
(1, 2, 2, 3, 4, 8, 5, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 7, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 5, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 5, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 5, 5, 26, 6),
(1, 2, 2, 3, 5, 5, 5, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 5, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 6, 5, 26, 6),
(1, 2, 2, 3, 4, 5, 5, 5, 26, 6)
);

{ ... Здесь должна быть вставлена функция get_chain ... }

var
_max, max_value: integer;
i, ix: integer;
begin
max_value := 0; ix := 0;
for i := 1 to n do begin
get_chain(a[i], n, _max);
if _max > max_value then begin
max_value := _max; ix := i;
end;
end;

writeln('Строка №', ix, ' : ', max_value, ' одинаковых элементов ...');
end.

Автор: Lapp 12.04.2007 16:29

Немного опоздал, но раз уж потратил свои кровные пять минут на написание, все же выкладываю плоды труда..
Этот фрагмент делает все, что нужно, при этом без посторонних функций. Может, это будет полезно..

m:=1;   {максимальная длина}
k:=1; {номер строки с максимально длиной последовательности}
for j:=1 to 10 do begin
n:=1;
for i:=2 to 10 do if a[i,j]=a[i-1,j] then begin
Inc(n);
if n>m then begin
m:=n;
k:=j
end
end
else n:=1
end;

Фрагмент не проверял в работе

Автор: volvo 12.04.2007 16:44

Тогда уже

if a[j, i]=a[j, i - 1] then begin ...
, идем ведь по строке, а не по столбцу...