Помощь - Поиск - Пользователи - Календарь
Полная версия: задача с матрицей
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
July
Помогите пожалуйста решить задачку!! wub.gif Найти номер строки заданной целочисленной матрицы размером 1010, в которой находит-ся самая длинная последовательность, составленная из одинаковых чисел.
volvo
Чтобы велосипед заново не строить, воспользовался готовой функцией 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
Немного опоздал, но раз уж потратил свои кровные пять минут на написание, все же выкладываю плоды труда..
Этот фрагмент делает все, что нужно, при этом без посторонних функций. Может, это будет полезно..
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
Тогда уже
if a[j, i]=a[j, i - 1] then begin ...
, идем ведь по строке, а не по столбцу...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.