Помощь - Поиск - Пользователи - Календарь
Полная версия: задача с матрицей
Форум «Всё о Паскале» > 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 ...
, идем ведь по строке, а не по столбцу...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.