Помогите пожалуйста решить задачку!! Найти номер строки заданной целочисленной матрицы размером 1010, в которой находит-ся самая длинная последовательность, составленная из одинаковых чисел.
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 := 1to n dobegin
get_chain(a[i], n, _max);
if _max > max_value thenbegin
max_value := _max; ix := i;
end;
end;
writeln('Строка №', ix, ' : ', max_value, ' одинаковых элементов ...');
end.
Lapp
12.04.2007 16:29
Немного опоздал, но раз уж потратил свои кровные пять минут на написание, все же выкладываю плоды труда.. Этот фрагмент делает все, что нужно, при этом без посторонних функций. Может, это будет полезно..
m:=1; {максимальная длина}
k:=1; {номер строки с максимально длиной последовательности}for j:=1to10dobegin
n:=1;
for i:=2to10doif a[i,j]=a[i-1,j] thenbegin
Inc(n);
if n>m thenbegin
m:=n;
k:=j
endendelse n:=1end;
Фрагмент не проверял в работе
volvo
12.04.2007 16:44
Тогда уже
if a[j, i]=a[j, i - 1] thenbegin ...
, идем ведь по строке, а не по столбцу...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.