Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2014, 20:44   #1
maxim1592
Новичок
Джуниор
 
Регистрация: 27.05.2014
Сообщений: 60
По умолчанию В заданном произвольном одномерном массиве

В заданном произвольном одномерном массиве определить число элементов самой длинной упорядоченной по возрастанию подпоследовательности.
maxim1592 вне форума Ответить с цитированием
Старый 27.05.2014, 21:51   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

http://informatics.mccme.ru//mod/book/view.php?id=488
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 28.05.2014, 14:33   #3
maxim1592
Новичок
Джуниор
 
Регистрация: 27.05.2014
Сообщений: 60
По умолчанию

что-то не получается...сбросьте код программы
maxim1592 вне форума Ответить с цитированием
Старый 28.05.2014, 14:50   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ого. либо я чего-то не учитываю, либо по ссылке более эффективные методы решения...

я бы написал примерно так:
Код:
const N = 10;
type MyMas = array[1..N] of integer;

function LenMaxLengthGrow(A : MyMas; var IndexOfMax : integer) : integer;
var
  i, max, k, max_index : integer;
begin
  {поиск самой длинной последовательности}
  max := 0;
  k := 1;
  for i := 2 to N do begin
    if A[i]>A[i-1] then inc(k)
    else
      begin
       if (k > max) then
         begin
           max := k;
           max_index := i - k;
         end;
       k := 1;
     end;
  end;

  {а это проверка, если самая длинная
      последовательность завершает строку}
  if (k > max) then begin
     max := k;
     max_index := N - k + 1;
  end;


  LenMaxLengthGrow := max;

  if max=0 then IndexOfMax := 0 { 'Ничего найти ва-аа-аще не удалось!' }
  else 
     IndexOfMax := max_index;
     { 'Самая длинная последовательность длиной ',max:1,
                ' начинается с индекса ', max_index:1; }
end;

var 
  Mas : MyMas;
  i, maxLength, indx : integer;
begin
  Randomize;
  for I:=1 to N do Mas[i] := Random(20+i*2) + i*2;

  Write('Исходный массив: ');
  for I:=1 to N do Write(Mas[i]:2,' ');
  WriTeln;

  indx := 0;
  maxLength := LenMaxLengthGrow( Mas, indx);

  WriteLn('Самая длинная последовательность длиной ',maxLength:1,
                ' начинается с позиции : ', indx:1);

  readln;
end.

Последний раз редактировалось Serge_Bliznykov; 28.05.2014 в 14:55.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2014, 15:10   #5
maxim1592
Новичок
Джуниор
 
Регистрация: 27.05.2014
Сообщений: 60
По умолчанию

спасибо большое
maxim1592 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ В одномерном массиве, demonvuck Помощь студентам 1 30.05.2013 21:49
программу нахождения экстремального элемента или его порядкового номера при заданном одномерном массиве А (Паскаль) S_S_V_N Помощь студентам 1 16.10.2011 21:54
пв одномерном массиве... Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 4 13.05.2011 19:53
Группа в одномерном массиве BaronVik Помощь студентам 5 21.10.2010 05:58
Поиск в одномерном массиве Joxter Помощь студентам 6 13.12.2008 14:19